0

我正在尝试使用 php 将多个图像上传到文件夹中。该代码可以打印出文件名,这意味着我得到了文件,但现在它没有上传它们并且我没有收到错误:下面是我的代码

<?php 
    $target = "image_uploads/";
    if(isset($_FILES['FILE_NAME'])){
        foreach($_FILES['FILE_NAME']['tmp_name']as $key => $error ){
           print_r($key);
           $file_upload = $key.$_FILES['FILE_NAME']['name'][$key];
           #print image names
           echo $file_upload.'</br>';
          move_uploaded_file($file_upload,$target);    
        }
    }
?>
4

4 回答 4

2

在目标中,您也必须提供文件名。请使用下面的代码,

$target = "image_uploads/";
if(isset($_FILES['FILE_NAME'])){
    foreach($_FILES['FILE_NAME']['tmp_name'] as $key => $error ){
        print_r($key);
        $file_upload = $key.$_FILES['FILE_NAME']['name'][$key];
        print image names
        echo $file_upload.'</br>';
        move_uploaded_file($file_upload,$target.$_FILES['FILE_NAME']['name']);    
    }
}
于 2013-02-08T13:03:28.720 回答
1

我认为问题出在 foreach 循环中。

foreach ($_FILES['FILE_NAME']['tmp_name'] as $key => $val) {
    // this loops through the tmp_name of $_FILES['FILE_NAME']
    // which is a string
}

我认为您的意思是:

foreach ($_FILES as $index => $fileArray) {
    $tmpName = $fileArray['tmp_name'];
    echo "File at key $index is temporarily uploaded at $tmpName";
}

上面的代码将遍历所有上传的文件并打印它的当前文件名。

于 2013-02-08T13:09:29.553 回答
0

您的目标文件夹可能不可写。

我还认为,您没有收到错误的原因是,您有以下情况:

print_r($key);

你应该有:

print_r($error);
于 2013-02-08T13:02:16.497 回答
0

这可能有多种原因:

  1. 在尝试将文件从临时位置移动到目标之前,目标文件夹必须存在,并且还必须是可写的

  2. move_uploaded_file 将第二个参数作为文件名,后跟目录名,因此它可以是:目标文件夹/user.file.name.ext

  3. 如果您要上传多个文件,则必须访问 $_FILES,如链接所示:http: //php.net/manual/en/features.file-upload.multiple.php

  4. 对于您可能遇到的 php 错误消息,这里有一个列表: http: //php.net/manual/en/features.file-upload.errors.php

于 2013-02-08T13:15:04.233 回答