我从另一个StackOverflow问题中借用了此代码,但是由于某些原因,我无法使其正常工作。测试时甚至没有通过文件。我的错误测试显示
总计:0
因此它在那里失败。任何帮助将不胜感激
session_start();
$total = count($_FILES['upload']['name']);
echo "total: " . $total;
for( $i=0 ; $i < $total ; $i++ ) {
$tmpFilePath = $_FILES['upload']['tmp_name'][$i];
echo $tempFilePath . "<br>";
if ($tmpFilePath != ""){
$newFilePath = "/images/prod/" . $_FILES['upload']['name'][$i];
echo $newFilePath . "<br>";
if(move_uploaded_file($tmpFilePath, $newFilePath)) {
echo $_FILES['upload']['name'];
}
}
}
<form action="addpics.php" method="get" name="add" enctype="multipart/form-data>
<input type="file" name="imgs[]" multiple>
<input type="submit" value=" - ADD - ">
</form>
期望文件上传到/ images / prod文件夹 并回显文件名数组
答案 0 :(得分:0)
您没有关闭enctype的反向逗号。 enctype="multipart/form-data"
答案 1 :(得分:0)
问题是因为您的方法,enctype和字段名称错误。正如其他人提到的那样,您缺少enctype的引用。
您正试图从表单中获取上载字段,但是表单没有此字段,因此您需要更新文件输入并将其重命名为upload[]
此外,您正在尝试通过GET请求提交表单,该请求不会传递数据。
此代码应该可以解决问题(我已对其进行了更改,因此它可以发布到自身而不是您的addpics.php
文件中)
<?php
if(isset($_FILES['upload'])){
session_start();
$total = count($_FILES['upload']['name']);
echo "total: " . $total;
for( $i=0 ; $i < $total ; $i++ ) {
$tmpFilePath = $_FILES['upload']['tmp_name'][$i];
echo $tempFilePath . "<br>";
if ($tmpFilePath != ""){
$newFilePath = "/images/prod/" . $_FILES['upload']['name'][$i];
echo $newFilePath . "<br>";
if(move_uploaded_file($tmpFilePath, $newFilePath)) {
echo $_FILES['upload']['name'];
}
}
}}
?>
<form method="post" name="add" enctype="multipart/form-data">
<input type="file" name="upload[]" multiple>
<input type="submit" value=" - ADD - ">
</form>