我在这里做上传任何文件(没有文件大小限制,用户可以上传任何文件扩展名)到服务器通过我的php代码(在codigniter),但当我试图上传的文件是大小185MB,所以它给我错误。
我还将php.ini添加到服务器上的文件夹结构中,这是从我的服务器支持中获得的。我增加了上传的大小,也增加了另一个相关的属性。我可以上传大小为20MB的文件,但无法上传文件大小为50mb, 100mb等。上传最大文件大小在本地主机上工作,但不在服务器上工作。
下面是我的代码。请帮助我修改我的代码
通过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();
}
}
文件上传大小可能是服务器配置问题:)
在php.ini中试试:
upload_max_filesize = 10M
post_max_size = 10M
—编辑(谢谢Big Chris)
脚本可能会超时处理此请求。所以你应该把它添加到函数
ini_set('max_execution_time', 120);
这告诉php这个文件可能需要2分钟来运行
希望有帮助