【问题标题】:upload large files using php, apache使用php、apache上传大文件
【发布时间】:2010-12-14 14:04:24
【问题描述】:

我想使用 PHP 和 Apache 服务器上传大约 150 MB 的文件。 使用我的代码,我最多可以上传 5MB

<?php

$path = $_COOKIE['Mypath'];
$target_path = "uploads/".$path ;
if(!isDir($target_path))
{
    mkdir($target_path);
}
    # Do uploading here
   $target_path = "uploads/".$path ."/";
   $target_path = $target_path . basename( $_FILES['uploadedfile']['name']); 
   if(move_uploaded_file($_FILES['uploadedfile']['tmp_name'], $target_path))
   {
      header("Location: somepage.html");
   } 
   else
   {
        echo "File not uploaded";
   }

?>

php.ini

max_execution_time = 300     ; Maximum execution time of each script, in seconds
max_input_time = 300    ; Maximum amount of time each script may spend parsing request data
;max_input_nesting_level = 64 ; Maximum input variable nesting level
memory_limit = 128M      ; Maximum amount of memory a script may consume (128MB)
file_uploads = On

; Temporary directory for HTTP uploaded files (will use system default if not
; specified).
;upload_tmp_dir =

; Maximum allowed size for uploaded files.
upload_max_filesize = 200M

【问题讨论】:

标签: php apache file-upload


【解决方案1】:

如果您使用共享服务器并想上传大文件,请创建一个 php.ini 文件并将以下代码写入其中并将其放在您要上传文件的文件夹中, 即您上传文件的目的地。

 upload_max_filesize = 150M
 post_max_size = 150M
 memory_limit = 512M
 max_execution_time = 1200 

【讨论】:

    【解决方案2】:

    您可以尝试使用 AJAX 和 PHP 流,这样无论您的文件有多大,内存使用量都将低于 1MB。

    【讨论】:

    • 文章中缺少 JS 和 HTML,这使我无法制作它的工作示例。
    【解决方案3】:

    使用 ajax 分块文件上传

    我测试了许多解决方案,我的选择是 Blueimp。这是我的评分列表:

    1. Blueimp - 111KB,https://github.com/blueimp/jQuery-File-Upload
    2. Plupload - 359KB,为 TinyMCE 开发,支持 HTML5 到 Flash、Gears、Silverlight 和 iFrame,http://www.plupload.com/
    3. 精细上传器 - 944KB,http://fineuploader.com/

    我测试的其他解决方案

    1. 上传 - http://www.uploadify.com/
    2. 可恢复 - https://github.com/23/resumable.js
    3. Dropzonejs - http://www.dropzonejs.com/
    4. Moo上传
    5. 花式上传
    6. 海雅克http://hayageek.com/docs/jquery-upload-file.php

    【讨论】:

      【解决方案4】:

      我还会检查最大输入时间和脚本执行时间。它们目前都设置为 300 秒(5 分钟)。这意味着用户必须在 300 秒内上传 150 mb(1200 兆位)。这意味着最终用户需要稳定且一致的 4mbps 连接 (1200 / 300 = 4) 才能在分配的时间内上传该文件。

      我会推荐类似于这些设置的东西:

      file_uploads = On
      upload_tmp_dir = "/your/tmp/dir"
      upload_max_filesize = 150M ; You may want to bump this to 151M if you have problems with 150 mb files
      max_execution_time = 1200 ; 20 minutes, which is a 150 mb file at 1mbps
      max_input_time = 1200
      

      【讨论】:

        【解决方案5】:

        这里有一些关于在 PHP 中上传文件的好信息

        Upload files PHP info

        或者您也可以在这里使用一个以块的形式上传文件的 Java 小程序来阅读它。 搜索Jupload

        php/Apache 配置 您需要将upload_max_filesize 和post_max_size 的值更改为您希望允许的最大文件大小。然后重新启动 apache,一切都应该正常了。

        【讨论】:

          猜你喜欢
          • 2016-04-19
          • 1970-01-01
          • 1970-01-01
          • 2013-07-07
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多