mysql - 当我刷新浏览器时,在 mysql 中上传表单重复文件

标签 mysql forms file-upload

我在刷新上传文件表单时遇到问题。第一次,当我点击“上传文件”时,它会在服务器上上传文件(文件夹 uploads/),并在 mysql 库中上传路径名(表"file")。当我刷新该页面时,它会在 mysql 库中重复相同的路径名,但不会在 uploads/中重复文件。我找到了类似的解决方案,但不是我的情况,我需要留在同一页面上,并列出所有上传的文件。这是表单代码:

<?php

if(isset($_POST['upload'])){
$targetfolder = "uploads/";
$target_file = $targetfolder . basename( $_FILES['file']['name']) ;
$ok=1;
$file_name = $_FILES['file']['name'];
$file_type=$_FILES['file']['type'];

if ($file_type=="application/pdf" || $file_type=="image/gif" || $file_type=="image/jpeg" || $file_type== "application/msword" || $file_type == "application/vnd.openxmlformats-officedocument.wordprocessingml.document"  ) {

 if ($ok == 0) {
    echo "Sorry, your file was not uploaded.";
} else {
    if (move_uploaded_file($_FILES["file"]["tmp_name"], $target_file)) {
        $sql = "INSERT INTO files (path, profesor, struka) VALUES ('" .$file_name. "', '". $_SESSION['username']. "','')";
			if (mysqli_query($link, $sql)){
				}else {echo "ERROR connecting database $sql".mysqli_error($link);
					}
		
    } else {
        echo "Sorry, there was an error uploading your file.";
    }
}}

else {

 echo "Sorry only PDF, DOCX, JPEG, GIF.<br>";
}}
?>

<div class = "upload">

<form  method="post" enctype="multipart/form-data"  action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>">
    Select file for upload:</br>
     <input type="file" name="file" >
    <input type="submit" id = "button_upload" value="Upload File" name="upload">
</form>

</div>

最佳答案

首先,我在您的代码中没有看到实际显示上传文件列表的位置。

第二 - 如果刷新页面,表单会再次提交,因此会使用相同的数据完成另一次插入。您看不到重复的文件,因为它刚刚被覆盖。

因此,在成功插入并上传后,您应该重定向到同一页面,例如使用 header('Location: yourscript.php')。在这种情况下,不会设置 POST。

关于mysql - 当我刷新浏览器时,在 mysql 中上传表单重复文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45381195/

相关文章:

php - 跨 session 的用户特定内容建议 [MySQL/Web]

php - 如何使用 MySQL PDO 检测数据库名称

c# - foreach 循环无法转换但手动转换和 for 循环工作

S3 上的 Mysql 数据目录

mysql - 如何在 MYSQL 中获取客户的特定名称?

php - 无需翻译的 Silex 表单验证

javascript - 基于html5中相同形式的另一个字段中的数据设置输入最大长度的方法?

php - 如何根据文本验证实时启用提交按钮?

java - Oracle 10g 上传图片时出现空指针异常

android - 将大文件上传到android中的服务器?