在php中上传大文件

时间:2011-04-07 11:18:45

标签: php

如何在PHP中上传大于2MB的文件,我在互联网上搜索并更改了php.ini文件,该行是:"upload_max_filesize = 200M",但我仍然无法上传2 MB文件

似乎有什么问题?

请帮帮我。谢谢。

9 个答案:

答案 0 :(得分:8)

曾几何时我的WAMP服务器遇到了这个问题,当我搜索解决方案时,我偶然发现了这个问题。所以,如果有人有同样的问题,这是我的工作解决方案,我希望这有帮助:

  1. 我正在使用WAMP堆栈。通过阅读上面的评论,您也在使用WAMP堆栈。如果您不知道,WAMP服务器有两(2)个php.ini(在PHP目录和Apache目录中)配置,一个用于CLI,另一个用于Apache本身(参见php.ini on WAMP server)。所以,我创建了info.php以检测我的服务器使用哪个php.ini,在我的情况下是Apache目录中的那个(参见Which PHP Ini file does my WAMP webpage uses?)。

  2. 打开服务器使用的php.ini ,正如@Pascal Martin建议的那样,更改upload_max_filesize并设置{{1然后重新启动你的服务器。

  3. 再次检查您的info.php,确保post_max_sizeupload_max_filesize的值已更改为您想要的值。

  4. 重启Apache。

  5. 这对我有用,希望得到这个帮助。

答案 1 :(得分:2)

正如您猜测的那样,您必须设置upload_max_filesize ...


但是你还必须设置post_max_size (引用)

  

设置允许的帖子数据的最大大小。   
此设置也会影响文件   上传。要上传大文件,这个   值必须大于   upload_max_filesize

答案 2 :(得分:1)

获取你的php.ini-dist文件,

  • 编辑它以设置上面显示的正确值
  • 将其重命名为php.ini
  • 将其复制到WINDOWS目录
  • 重启Apache

答案 3 :(得分:0)

还有其他选项可以限制这一点:

max_input_time = 600
php_value max_execution_time = 600
post_max_size = 200M

(...并重启Apache)

答案 4 :(得分:0)

将以下代码放在.htaccess文件的旁边并保存。

php_value upload_max_filesize 200M
php_value post_max_size 200M
php_value max_input_time 2000

答案 5 :(得分:0)

要上传较大的文件,需要从php.ini文件更改/增加post_max_size和upload_max_filesize指令的值。

upload_max_filesize = 200M post_max_size = 201M

这会将单个文件的上传限制增加到200 MB,默认值为2 MB。

答案 6 :(得分:0)

要上传大文件(> 5MB),我使用卡盘上传方法。

/**
 * @param $file
 * @param $fileSize
 * @param $name
 * @return int
 */
public function chunkUpload($file, $fileSize, $applicantID, $name) {
    
    $targetFile     = 'upload/'. $name;
    $chunkSize      = 256; // chunk in bytes
    $uploadStart    = 0;

    $handle = fopen($file, "rb");
    $fp     = fopen($targetFile, 'w');

    # Start uploading
    try {
    
        while($uploadStart < $fileSize) {
        
            $contents = fread($handle, $chunkSize);
            fwrite($fp, $contents);
        
            $uploadStart += strlen($contents);
            fseek($handle, $uploadStart);
        }
    
        fclose($handle);
        fclose($fp);
        
        return 200;
        
    } catch (\Exception $e) {
        return 400;
    }
}

答案 7 :(得分:0)

以这种方式更改了服务器设置...

memory_limit = 250M //The maximum amount of memory in bytes a script is allowed to allocate.
max_input_time = 600 //The maximum time in seconds a script is allowed to parse input data.
max_execution_time = 600 //The maximum time in seconds a script is allowed to run before it is terminated.

post_max_size = 200M //The maximum size in bytes of data that can be posted with the POST method. Typically, should be larger than upload_max_filesize and smaller than memory_limit.
upload_max_filesize = 100M //The maximum size in bytes of an uploaded file.

答案 8 :(得分:-2)

尝试在PHP脚本中设置它(在顶部)..

ini_set("upload_max_filesize", "255M");
ini_set("post_max_size, "256M");