【问题标题】:Multiple Uploads PHP多次上传 PHP
【发布时间】:2017-02-24 01:49:01
【问题描述】:

我正在尝试使用 dropzone JS 插件和 PHP 来上传多个文件,然后输出每个文件的 url。

到目前为止我有这个:

  $upload_dir = 'files';

  for($i=0; $i<count($_FILES['file']['tmp_name']); $i++) {
    $tempFile = $_FILES['file']['tmp_name'][$i];

    $uploadPath = dirname( __FILE__ ) . DIRECTORY_SEPARATOR . $upload_dir . DIRECTORY_SEPARATOR;

    $mainFile = $uploadPath.time().'-'. $_FILES['file']['name'][$i];
     $mainFile_short = time().'-'. $_FILES['file']['name'][$i];

    if(move_uploaded_file($tempFile,$mainFile)) {
    }
  }

我似乎无法完成这项工作,但我不确定我哪里出错了。任何想法都会很棒!

【问题讨论】:

  • 你只是假设上传总是成功的。不好的假设。总是假设失败,检查失败,并将成功视为惊喜。 $_FILES 中有一个['error'] 参数是有原因的...
  • 随着 MarcB 关于检查 error 值的说法,检查您的服务器日志是否有错误,并检查您是否在客户端(开发工具控制台)收到错误。除此之外,我们需要更多信息,例如:您的 JS 是否发出有效的 ajax POST 请求?您是否给 Dropzone 提供了有效的文件对象?您的文件是否大于最大上传/最大帖子大小
  • 嗯,这是 var_dump、print_r 和 die 等调试派上用场的示例。只需在您的表单上快速检查一下 enctype="multipart/form-data"。

标签: javascript php html upload


【解决方案1】:
$img = $_FILES['file'];
$upload_dir = 'files';

if(!empty($img))
{
    $img_desc = reArrayFiles($img);
    print_r($img_desc);

    foreach($img_desc as $val)
    {
        $tempFile = $val['tmp_name'];

        $uploadPath = dirname( __FILE__ ) . DIRECTORY_SEPARATOR . $upload_dir . DIRECTORY_SEPARATOR;

        $mainFile = $uploadPath.time().'-'. $val['name'];
        $mainFile_short = time().'-'. $val['name'];

        if(move_uploaded_file($tempFile,$mainFile)) {
        }
    }
}

【讨论】:

  • $val$var ?
  • $val :) 对不起,我的错误
  • $val["name"] 或在循环中将 $val 更改为 $var。
  • 您能否添加一些文字来说明此代码将如何解决 OP 问题?
  • 如果我只是做 $img_desc = $img,我可以得到这个来打印带有上传文件信息的数组,但它不会将文件移动到新文件夹,它会给出未定义索引的错误: tmp_name 和名称?
猜你喜欢
  • 2018-11-05
  • 1970-01-01
  • 1970-01-01
  • 2018-06-19
  • 2010-12-12
  • 2012-09-08
  • 1970-01-01
  • 1970-01-01
  • 2021-08-05
相关资源
最近更新 更多