无法使用php move_uploaded_file()移动上传的文件

时间:2013-08-04 07:37:48

标签: php post dropzone.js is-uploaded-file

我有一个页面,允许用户在我的网站上发布广告。此页面允许他们上传相关产品的多张照片。

我目前有两种形式。第一个处理产品的细节,而第二个是dropzone(使用dropzone.js),允许他们上传照片。我希望保持这些形式分开,因为照片可能非常大,我希望它们立即上传,而不是等待用户按提交。这样可以节省整体时间。

因此,当照片放入dropzone时,它们会上传到tmp目录(如果用户没有发布整个广告)。一旦用户提交了第一个表单,我就使用move_uploaded_file()将文件移动到其永久位置。这是我正在使用的代码:

for ($loop=1; $loop<=6; $loop++) {

    // Retrieve filename and path
    $file_path = "image_".$loop;
    $tmp_path = $form_data[$file_path]; // $form_data is an array of POST data and contains the file_path of the image in the tmp dir

    // Move file
    $destination_path = 'images/adverts/'.$advert->id;
    $success = move_uploaded_file($tmp_path, $destination_path);

}

但是,move_uploaded_file()无效。在查阅了文档之后,我可以看到move_uploaded_file()检查文件是否是使用HTTP POST(它是)上传的。可以肯定的是,我运行了一个快速测试,看看is_uploaded_file()是否在我上传的文件中返回TRUE,但事实并非如此。

is_uploaded_file()如何确定文件是否已上传?我想知道当我来移动文件时,php已经忘记它已被上传?还有其他原因我的档案不会通过吗?

非常感谢

1 个答案:

答案 0 :(得分:1)

我认为我已经到底了...

move_uploaded_file()似乎只在POST数据发送到的函数中起作用。就我而言,我发送了两个单独的POST请求。第一个来自dropzone.js,它将图像存储在tmp目录中。如果我在接收该POST请求的函数中运行了is_uploaded_file(),则返回TRUE。

但是,一旦上传到tmp目录,我就会在第二种形式的隐藏字段中插入路径。我试图在从第二个表单接收POST数据的函数中运行move_uploaded_file()(然后使用is_uploaded_file())。但是,由于该文件不是此POST数据的一部分(只是tmp目录的路径),因此is_uploaded_file()返回false。

我希望能帮到某人......