php - 文件获取内容() : Filename cannot be empty (uploading files to be optional)

标签 php html mysql

我是 php 新手。我用php制作了一个简单的上传表单。这是我的代码。

<html><head></head>
<body>

<form method="post" action="" enctype="multipart/form-data">

    Upload File:
    <input type="file" name="upload" /><br> 
    <input type="submit" name="submit" value="Submit"/>
</form>
</body>
</html>

<?php
include("config.php");

if(isset($_POST['submit'])  )
{


$filename = $con->real_escape_string($_FILES['upload']['name']);
$filedata= $con->real_escape_string(file_get_contents($_FILES['upload']['tmp_name']));
$filetype = $con->real_escape_string($_FILES['upload']['type']);
$filesize = intval($_FILES['upload']['size']);

if ($_FILES['upload']['name'] == 0 ){

echo "<br><br> New record created successfully";

}

else {

    $query = "INSERT INTO contracts(`filename`,`filedata`, `filetype`,`filesize`) VALUES ('$filename','$filedata','$filetype','$filesize')" ;

    if ($con->query($query) === TRUE) {
    echo "<br><br> New record created successfully";
    } else {
    echo "Error:<br>" . $con->error;
    }

}
$con->close(); 
}   

?>

效果很好。但是,如果我在没有附加文件的情​​况下按提交,则会显示错误,Warning: file_get_contents(): Filename can not be empty in C:\xampp\htdocs\contractdb\filetest.php on line 20 。

我希望上传文件是可选的,因为并非每个用户都有要附加的文件。我还希望用户在上传后下载文件而不删除 file_get_contents($_FILES['upload']['tmp_name'])。

我该怎么做?

最佳答案

您的检查应该在调用 file_get_content() 之前进行,这样它就不会抛出错误,并且只有在文件输入不为空时才调用该函数:

if(isset($_POST['submit'])  ) {

if ($_FILES['upload']['size'] != 0 ) {

  $filename = $con->real_escape_string($_FILES['upload']['name']);
  $filedata= $con->real_escape_string(file_get_contents($_FILES['upload']
  ['tmp_name']));
  $filetype = $con->real_escape_string($_FILES['upload']['type']);
  $filesize = intval($_FILES['upload']['size']);


  $query = "INSERT INTO contracts(`filename`,`filedata`, `filetype`,`filesize`) VALUES ('$filename','$filedata','$filetype','$filesize')" ;

  if ($con->query($query) == TRUE) {
   echo "<br><br> New record created successfully";
  } else {
   echo "Error:<br>" . $con->error;
  }

 } 

 else {
   echo 'error: empty file';
 }
}

关于php - 文件获取内容() : Filename cannot be empty (uploading files to be optional),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42823526/

相关文章:

php - 合并两个 MySQL 表但希望一列等于另一列

php - 为什么传递数组时会收到警告错误

使用准备语句的MySQL版本错误

PHP foreach 行作为 $var,行名和行号重复

html - 按钮的宽度不会与其所在的列相同

php - MySQL 查询在 OPTIMIZE TABLE 后返回不同的行(来自 PHP)

php - 通过 GET 方法使用 PHP 复选框数组

php - 在php中发布二维数组

php - 表单提交到目录?可能的?

Javascript/html5 选择器