【问题标题】:Cant move uploaded file using php move_uploaded_file()无法使用 php move_uploaded_file() 移动上传的文件
【发布时间】:2013-08-05 03:15:44
【问题描述】:

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

我目前有两种表格。第一个处理产品的详细信息,而第二个是允许他们上传照片的 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是否已经忘记它已经上传了?还有其他原因我的文件无法通过吗?

非常感谢

【问题讨论】:

  • $form_data是什么?从哪里来的$_FILES
  • @jakenoble:见评论 - $form_data is an array of POST data and contains the file_path of the image in the tmp dir
  • 额外...$form_data 包含第一个表单中的所有数据(如问题中所述)。此表单包含由 dropzone.js 放置在那里(在隐藏字段中)的 file_paths。

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


【解决方案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。

我希望对某人有所帮助...

【讨论】:

  • 我在使用 Dropzone.js 时遇到了同样的问题。你是怎么解决的?
猜你喜欢
  • 2011-06-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-06-21
  • 1970-01-01
  • 1970-01-01
  • 2017-07-07
相关资源
最近更新 更多