【问题标题】:How to upload multiple files one by one如何一个一个地上传多个文件
【发布时间】:2016-11-24 14:38:25
【问题描述】:

我需要通过浏览器一次上传大量图片(例如 200 张小图片)。我有这个代码:

<?php
if(isset($_POST['Upload_files']) and $_SERVER['REQUEST_METHOD'] == "POST"){

  echo count($_FILES['files']['name']); // Even if I upload more than 20 files, it still displays 20.

  $target_directory = "upload/";  
  foreach ($_FILES['files']['name'] as $file_number => $file_name) {
    $file = $_FILES["files"]["tmp_name"][$file_number];
    if (mime_content_type($file) != 'image/png' && mime_content_type($file) != 'image/jpeg')
      { $error[] = 'File '.$file_name.' is not in JPG / PNG format!'; continue; }
    else
      { if(move_uploaded_file($file, $target_directory.$file_name)) {$count_of_upload_file++;}}
  }
}

// If files were uploaded 
if($count_of_upload_file != 0){echo 'Your files ('.$count_of_upload_file.' ) were successfully uploaded.';}

// If there was an error
if (isset($error)) {foreach ($error as $display_error) {echo '- '.$display_error.'<br />';}}
?>

<form action="" method="post" enctype="multipart/form-data">
      <input type="file" name="files[]" multiple="multiple" accept="image/*">
      <input type="submit" name="Upload_files" value="Upload files">
</form>   

而且它有效。但是,我的提供商将 'max_file_uploads' 设置为 20(我无法更改它)。 (Uploadify 扩展适用于 20 多个文件,但我想有自己的小解决方案。)所以我想我需要在这里添加一些东西,而不是一次上传 200 个文件,而是一个接一个地上传 200 个文件(或二十乘二十)。但我不知道该怎么做。 (要使用 AJAX 吗?——我没用过,所以我真的不知道。)谢谢!

【问题讨论】:

  • 答案真的是ajax。在网上查一些例子。

标签: php image multiple-file-upload


【解决方案1】:

如果你不想使用ajax,你需要一个循环来接收文件

for($i = 0; $i < count($_FILES['files']['tmp_name']); $i++){
    $tmp = $_FILES['files']['tmp_name'][$i];
    $name = md5(microtime());

 if(move_uploaded_file($tmp, "dir/$name.jpg")){
    echo "Uploaded successfully";
 }else{
    echo "failed";
 }
}

在您的表单中,您必须将所有输入字段命名为 files[],例如:

<form action="" method="post" enctype="multipart/form-data">
      <input type="file" name="files[]" multiple="multiple" accept="image/*">
      <input type="file" name="files[]" multiple="multiple" accept="image/*">
      <input type="file" name="files[]" multiple="multiple" accept="image/*">
      <input type="submit" name="Upload_files" value="Upload files">
</form>

或者如果你想使用 ajax,这里有一个例子: Upload multiple image using AJAX, PHP and jQuery

【讨论】:

  • 谢谢你,米格尔 - 我很想使用你的版本(因为我写过:我从未使用过 ajax),但是它仍然无法正常工作。它只上传 20 个文件。
  • 您是否尝试过使用 .htaccess 文件?设置这个:php_value max_file_uploads 200
  • 我的提供商将“max_file_uploads”设置为 20(我无法在我的 .htacces 中更改它)。
  • 您已限制 php.ini 文件,但您可以创建一个 .htaccess 文件。你应该试试
猜你喜欢
  • 2019-10-25
  • 2022-07-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-12-23
  • 2016-10-08
  • 1970-01-01
相关资源
最近更新 更多