突然,pdf不再上传(php / mysql)

时间:2015-08-07 10:04:08

标签: php mysql pdf upload

我刚刚注册,因为我突然遇到问题,到目前为止代码工作得很好,我之前在这里找到了一些非常好的答案。希望你们能再次帮助我,这次甚至投票;)

$sql='SELECT projektKurz, projektTitelGer, projektTitelEng, projektTitelFr
FROM projects 
WHERE PNO=?';

$statement=$mysqli->prepare($sql);
//  FEHLERBEHANDLUNG
//  var_dump($statement);
//  echo "<br />";
//  var_dump($mysqli->error);
$statement->bind_param("i", $PNO);
$statement->execute();
$statement->bind_result($projektKurz,$projektTitelGer,$projektTitelEng,$projektTitelFr);
$statement->fetch();
$statement->store_result();
$statement->free_result();

$report="";
$allowedExts = array("xls", "xlsx", "doc", "docx", "ppt", "pptx", "pdf", "zip", "rar", "gif", "jpeg", "jpg", "png", "bmp");
$temp = explode(".", $_FILES["file"]["name"]);
$extension = end($temp);
if ((($_FILES["file"]["type"] == "application/vnd.ms-excel")
|| ($_FILES["file"]["type"] == "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet")
|| ($_FILES["file"]["type"] == "application/msword")
|| ($_FILES["file"]["type"] == "application/vnd.openxmlformats-officedocument.wordprocessingml.document")
|| ($_FILES["file"]["type"] == "application/vnd.ms-powerpoint")
|| ($_FILES["file"]["type"] == "application/vnd.openxmlformats-officedocument.presentationml.presentation")
|| ($_FILES["file"]["type"] == "application/pdf")
|| ($_FILES["file"]["type"] == "application/x-pdf")
|| ($_FILES["file"]["type"] == "application/acrobat")
|| ($_FILES["file"]["type"] == "application/vnd.pdf")
|| ($_FILES["file"]["type"] == "text/pdf")
|| ($_FILES["file"]["type"] == "text/x-pdf")
|| ($_FILES["file"]["type"] == "application/force-download")
|| ($_FILES["file"]["type"] == "application/x-octet-stream")
|| ($_FILES["file"]["type"] == "application/zip")
|| ($_FILES["file"]["type"] == "application/x-rar-compressed")
|| ($_FILES["file"]["type"] == "image/gif")
|| ($_FILES["file"]["type"] == "image/jpeg")
|| ($_FILES["file"]["type"] == "image/jpg")
|| ($_FILES["file"]["type"] == "image/png")
|| ($_FILES["file"]["type"] == "image/bmp"))
&& ($_FILES["file"]["size"] < 100000000)
&& in_array($extension, $allowedExts))
  {
  if ($_FILES["file"]["error"] > 0)
    {
    $report .= "Return Code: " . $_FILES["file"]["error"] . "<br />";
    }
  else
    {
    $report .= "Upload: " . $_FILES["file"]["name"] . "<br />
    Type: " . $_FILES["file"]["type"] . "<br />
    Size: " . ($_FILES["file"]["size"] / 1024) . " kB<br />
    Temp file: " . $_FILES["file"]["tmp_name"] . "<br />";

    if (file_exists("projekte/".$projektKurz."/" . $_FILES["file"]["name"]))
      {
      $report .= $_FILES["file"]["name"] . " existiert schon! ";
      }
    else
      {
      move_uploaded_file($_FILES["file"]["tmp_name"],
      "projekte/".$projektKurz."/" . $_FILES["file"]["name"]);
      $report .= "Gespeichert unter: projekte/".$projektKurz."/" . $_FILES["file"]["name"];
      }
    }
  }
else
  {
  $report .= "Ungueltige Datei!";
  }
  header("Location: projectupload.php?PNO=$PNO");

我已经使用此代码大约3年了,没有任何问题。现在我突然遇到上传问题。 Pdfs不再上传。图片工作,doc(较旧的MS Word),docx,xl​​sx也可以。

到目前为止,我已经设置了更高的权限(777),为pdf添加了额外的mime类型(之前我只有application / pdf),并尝试更改文件夹的所有者,但没有解决问题。

文件大小不是问题,我之前上传了50 MB文件,现在甚至拒绝了44kb的pdf文件。

我无法找到可以在线解释此问题的mime类型的最新更改。

我遇到了与docx,xl​​sx和pptx相同的问题,但是一旦我插入了这些较新文档的mime类型,它就得到了修复(即使它之前使用旧文档的mime类型,xls和ppt也是如此)

当我尝试上传pdf文件时,我会收到回复:

Ungueltige Datei!

我没有想法,希望你们有更多的想法;)

UPDATE1:

正如所建议的那样,我已经激活了顶部的var_dump,它让我得到了这个:

object(mysqli_stmt)#2 (10) { ["affected_rows"]=> int(0) ["insert_id"]=> int(0) ["num_rows"]=> int(0) ["param_count"]=> int(1) ["field_count"]=> int(4) ["errno"]=> int(0) ["error"]=> string(0) "" ["error_list"]=> array(0) { } ["sqlstate"]=> string(5) "00000" ["id"]=> int(1) }

string(0) ""

1 个答案:

答案 0 :(得分:0)

在这种情况下,很可能由于某种原因$_FILES["file"]["type"]'s值为empty字符串。

上传文件时,最好在一开始就检查错误$_FILES["file"]["error"]。如果其值等于0,则继续执行文件类型检查,否则返回相应的消息错误。

Here you can find the possible error values