使用php上传大文件?

时间:2012-01-12 04:56:54

标签: php file-upload

我需要上传一个大文件(最多190mb) 以下是限制的服务器详细信息:

memory_limit = 50M
post_max_size = 192M
file_uploads = On
upload_max_filesize = 192M 
max_execution_time = 1800 sec
max_input_time = 1800 sec

这是我的代码:

 $query="update tbl_Cards set CardName='$cardname',Description='$Description'";
    if($cardvideo)
    {
      if($_FILES["cardvideo"]["type"] == "video/quicktime"||$_FILES["cardvideo"]["type"] == "video/mov"||$_FILES["cardvideo"]["type"] == "video/mp4"||$_FILES["cardvideo"]["type"] == "video/mpv"||$_FILES["cardvideo"]["type"] == "video/3gp")
      {
        if($_FILES["cardvideo"]["size"]<=10485760)
        {
          $cardvideo=$date."card.mp4";
          $tmppath3="services/video/".$cardvideo;
          if(move_uploaded_file($_FILES['cardvideo']['tmp_name'],$tmppath3))
          {
          $thumb=$date.".jpg";
          $thumbDirectory="services/VideoCapturePic/";
          exec("convert \"{$tmppath3}[0]\" -colorspace RGB -geometry 200 $thumbDirectory$thumb");
          $query.=",Video='$cardvideo',CapturePic='$thumb'";
        }
        $query.="where CardId='$card'";

        $result=mysql_query($query);
        if($result)
        {
        } else
        {
        echo mysql_error();
        }

但是当我上传10 MB文件时,他们上传成功,但当我尝试上传大文件(20或30或40或50)时,我得到了这样的回复:

Column count doesn't match value count at row

我做错了什么?

2 个答案:

答案 0 :(得分:1)

它不仅仅是php.ini,而且服务器也可以限制你的请求大小。虽然在apache默认情况下它没有设置为限制文件大小,但我认为你应该检查一次。 LimitRequestBody指令用于限制请求大小。检查所有配置文件中的指令(我假设您使用的是apache)并更改目录的值。 样品用法:

<Directory "/var/www/vhost/mydir/uploads">
    LimitRequestBody 204444344
</Directory>

答案 1 :(得分:0)

我建议使用一些大型文件上传器,例如http://www.uploadify.com/