在php中将文件上传到服务器时没有大小限制

时间:2014-05-22 11:07:39

标签: php codeigniter file-upload

这里我正在通过我的php代码(在codigniter中)上传任何文件(没有文件大小限制并且用户可以上传任何文件扩展名)到服务器但是当我尝试上传大小为185MB的文件时所以它给了我错误。
我还将php.ini添加到服务器上的文件夹结构中,该结构来自我的服务器支持。我确实增加了上传大小,并增加了另一个相关属性。我可以上传大小为20MB但无法上传文件大小50mb,100mb等的文件。上传最大文件大小在localhost上工作但不在服务器上工作。
请在下面是我的代码。请帮我修改我的代码

通过ajax上传文件

$.ajax({
            url: '<?php echo base_url();?>files>',
            type: 'POST',
            dataType :'json',
            xhr: function() {
                var myXhr = $.ajaxSettings.xhr();
                if(myXhr.upload){
                    myXhr.upload.addEventListener('progress',progress, false);
                }
                return myXhr;
            },
            beforeSend:function() { 
                $("#progressbar").show();
                $("#cmdSub").attr("disabled",true);
                $("#cmdSub").val("Please Wait");
            },
            success: function (data) {
                if(data.success != ""){
                    location.href = "<?php echo base_url();?>files/";
                }
                if(data.error != ""){
                    $("#f_name").val("");
                    $("#fnameinfo").html(data.error);
                    $("#cmdSub").attr("disabled",false);
                    $("#cmdSub").val("Submit");
                }
            },
            error: function(xhr, textStatus, thrownError) {
                alert("Error while uploading");
                $("#cmdSub").attr("disabled",false);
                $("#cmdSub").val("Submit");
                $("#ffileinfo").html("");
            },
            data: formdata,
            // this is the important stuf  need to overide the usual post behavior
            cache: false,
            contentType: false,
            processData: false
        });

控制器代码

function uploadFile() {

        $f_name = $_FILES['f_name']['name'];
         $f_type = $_FILES['f_name']['type'];
         $f_size = $_FILES['f_name']['size'];
        $f_ext = pathinfo($_FILES['f_name']['name'], PATHINFO_EXTENSION);

        $filename = pathinfo($_FILES['f_name']['name'], PATHINFO_FILENAME );
        $filename = str_replace($arr_chars,"_",$filename);

        $configFile = array (
                'allowed_types' => '*',
                'upload_path'   => $file_upload_path,
                'file_name'     => $filename.'_'.$fid
            );

        $this->upload->initialize($configFile);

        if($this->upload->do_upload('f_name')) {
            //insert the record
        } else {
                $error = $this->upload->display_errors();
        }

    }

1 个答案:

答案 0 :(得分:0)

文件上传大小可能是服务器配置问题:)

在你的php.ini中试试这个:

upload_max_filesize = 10M
post_max_size = 10M

- 编辑(感谢Big Chris)

脚本可能会超时处理此请求。所以你应该把它添加到你的函数

ini_set('max_execution_time', 120); 

这告诉php这个文件最多需要2分钟才能运行

希望有所帮助:)