使用Ajax在Codeigniter中上传文件

时间:2018-07-18 15:21:48

标签: php ajax codeigniter

在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)

1 个答案:

答案 0 :(得分:1)

不管您为$config['max_size'] = '1000000';设置了什么,您都很可能有服务器限制。此限制由post_max_size文件中的upload_max_size和/或php.ini定义(以较小者为准);对于大多数提供商,即使使用ini_set()也无法更改。

仍有一些选项可以上传大文件。使用“分块”文件或将文件分成较小的可管理片段的系统,或使用ftp。我相信dropzone支持分块,但是您必须修改脚本来处理此问题,并且很可能将无法使用CI的上载程序库。