php上传文件到文件夹中

时间:2013-02-08 12:58:19

标签: php mysql

我正在尝试使用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 个答案:

答案 0 :(得分: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']);    
    }
}

答案 1 :(得分: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";
}

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

答案 2 :(得分:0)

您的目标文件夹可能无法写入。

我也认为,你没有得到错误的原因是,你有以下几点:

print_r($key);

Yous应该:

print_r($error);

答案 3 :(得分:0)

这可能有多种原因:

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

  2. move_uploaded_file将第二个参数作为文件名后跟目录名,因此它可以是:target folder / 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