我刚刚注册,因为我突然遇到问题,到目前为止代码工作得很好,我之前在这里找到了一些非常好的答案。希望你们能再次帮助我,这次甚至投票;)
$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,xlsx也可以。
到目前为止,我已经设置了更高的权限(777),为pdf添加了额外的mime类型(之前我只有application / pdf),并尝试更改文件夹的所有者,但没有解决问题。
文件大小不是问题,我之前上传了50 MB文件,现在甚至拒绝了44kb的pdf文件。
我无法找到可以在线解释此问题的mime类型的最新更改。
我遇到了与docx,xlsx和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) ""
答案 0 :(得分:0)
在这种情况下,很可能由于某种原因$_FILES["file"]["type"]'s
值为empty
字符串。
上传文件时,最好在一开始就检查错误$_FILES["file"]["error"]
。如果其值等于0
,则继续执行文件类型检查,否则返回相应的消息错误。