使用php,apache上传大文件

时间:2009-11-09 10:28:25

标签: php apache file-upload

我想使用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

5 个答案:

答案 0 :(得分:7)

我还会检查最大输入时间和脚本执行时间。它们目前都设置为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

答案 1 :(得分:3)

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

Upload files PHP info

或者您也可以使用以小块上传文件的Java小程序在此处阅读。 搜索Jupload

php / Apache配置 您需要将upload_max_filesize和post_max_size的值更改为您想要允许的最大文件大小。然后重启apache,一切都应该有效。

答案 2 :(得分:3)

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

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

答案 3 :(得分:1)

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

答案 4 :(得分:1)

使用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. Fineuploader - 944KB,http://fineuploader.com/
  4. 我测试的其他解决方案

    1. 上传 - http://www.uploadify.com/
    2. Resumable - https://github.com/23/resumable.js
    3. Dropzonejs - http://www.dropzonejs.com/
    4. MooUpload
    5. Fancyupload
    6. Hayageek http://hayageek.com/docs/jquery-upload-file.php