在Codeigniter中使用Ajax上传文件
问题是,当我上载一些视频时,有时它上载了它有时却没有(ajax错误:功能运行),尽管我将max_size配置设为1000000,我试图将max_size设置为0(无限制),但它仍然上传大文件或视频时显示错误。这是我的控制器
public function add_product()
{
if($this->input->post("product_title")){
$title = $this->input->post('product_title');
$description = $this->input->post('product_description');
$price = $this->input->post('product_price');
$quantity = $this->input->post('product_quantity');
$config['upload_path']= './images/';
$config['allowed_types'] = 'jpg|jpeg|png|gif|mp3|mp4';
$config['max_size'] = '1000000';
$this->load->library('upload',$config);
if(!$this->upload->do_upload('image')){
$error = array('error' => $this->upload->display_errors());
echo json_encode($error);
die();
return false;
}else{
$image =$this->upload->data();//= $image =$_FILES["image"]["name"];
$data = array('title'=>$title,'description'=>$description,'price'=>$price,'quantity'=>$quantity,'image'=>$image['file_name']);
if($this->Products_model->create_product($data)){
echo json_encode($image);
//////////original
//echo $image['file_type'];
}else{
return false;
}
}
//end if
}
///end method
}
这是我的ajax
$.ajax({
type:'post',
url: baseURL+"/admin/Products/add_product",
data:postData2,
dataType: 'json',
contentType: false,
cache: false,
processData:false,
success:function(data){
// $('#uploaded_image').html(data['file_type']);
if(data.error){
alert(data.error);
return false;
}
$('#register_form_products')[0].reset();
AddNotification('add_product');
SetNotificationModal('new product is added');
} ,
error: function() {
alert('error');
}
});
更新
error: function(jqXHR, textStatus, errorThrown) {
alert('error look at console for more info ');
console.log('jqXHR:');
console.log(jqXHR);
console.log('textStatus:');
console.log(textStatus);
console.log('errorThrown:');
console.log(errorThrown);
}
我从Google复制了此代码以在控制台中显示错误,所以这是错误
parsererror
468:1062 errorThrown:
468:1063 SyntaxError: Unexpected end of JSON input
at parse (<anonymous>)
at Ut (jquery.min.js:2)
at k (jquery.min.js:2)
at XMLHttpRequest.<anonymous> (jquery.min.js:2)
468:1058 jqXHR:
468:1059 Object
468:1060 textStatus:
468:1061 parsererror
468:1062 errorThrown:
468:1063 SyntaxError: Unexpected end of JSON input
at parse (<anonymous>)
at Ut (jquery.min.js:2)
at k (jquery.min.js:2)
at XMLHttpRequest.<anonymous> (jquery.min.js:2)
答案 0 :(得分:1)
不管您为$config['max_size'] = '1000000';
设置了什么,您都很可能有服务器限制。此限制由post_max_size
文件中的upload_max_size
和/或php.ini
定义(以较小者为准);对于大多数提供商,即使使用ini_set()
也无法更改。
仍有一些选项可以上传大文件。使用“分块”文件或将文件分成较小的可管理片段的系统,或使用ftp。我相信dropzone支持分块,但是您必须修改脚本来处理此问题,并且很可能将无法使用CI的上载程序库。