PHP& jQuery文件上传问题

时间:2011-03-31 09:15:09

标签: php jquery upload is-uploaded-file

我正在尝试使用blueimp's jQuery file upload script

文件将发送到“upload.php”:

if (isset($_FILES['file'])) {

    $file = $_FILES['file'];

    // Set variables
    $file_name  = stripslashes($file['name']);

    if (!is_uploaded_file($file['name'])) {
        echo '{"name":"'.$file_name.' is not a uploaded file."}';
        exit;
    }
}

..但是尽管传递了isset($ _ FILES ['file']),脚本在is_uploaded_file失败。

可能导致这种情况的原因是什么?

修改

我从$file['name']更改为$file['tmp_name'],并传递了is_uploaded_file。现在脚本在move_uploaded_file

失败了
if (move_uploaded_file($file_name, $upload_dir."/".$file_name)) {
    echo "success";
} else {
    echo "failed";
}

1 个答案:

答案 0 :(得分:3)

您应该使用is_uploaded_file($file['tmp_name'])。这是服务器上的实际文件名。

$file['name']是客户端计算机上的文件名,只有在上传文件后才能重命名文件

有关详细信息,请阅读is_uploaded_file()上的文档:

  

为了正常工作,功能   is_uploaded_file()需要一个参数   比如$ _FILES ['userfile'] ['tmp_name'],    - 客户端计算机上上载文件的名称   $ _FILES ['userfile'] ['name']没有   工作

此外,您说move_uploaded_file()效果不佳。正如预期的那样,这是由完全相同的问题

引起的

您正在尝试移动文件$file_name,但$file_name设置为$file['name']而不是$file['tmp_name']。请理解$file['name']只包含一个字符串,该字符串等于计算机上的原始文件名,而$file['tmp_name']包含一个字符串,该字符串指向服务器上文件名不是临时的路径存储