我在刷新上传文件表单时遇到问题。第一次单击“上传文件”时,它在服务器上上传文件(文件夹uploads /),路径名在mysql base中上传(表“ files”)。当我刷新该页面时,它在mysql base中复制相同的路径名,而不在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/