我试图通过CodeIgniter中的Ajax上传图像,但我总是得到错误"您没有选择要上传的文件"。
下面是jQuery代码:$(document).ready(function (e) {
$('#submitUpload').bind('click', function(evt) {
var $btn = $(this).button('loading');
var formData = new FormData();
var inputImage = $('#inputImage')[0];
console.log(inputImage.files[0]);
formData.append('file', inputImage.files[0]);
$.ajax({
url: baseUrl + 'trainings/uploadImageAsync',
type: 'post',
dataType: 'json',
data: formData,
contentType: false,
cache: false,
processData: false,
success: function(data) {
console.log(data);
$btn.button('reset');
}
});
});
});
这部分的格式是:
<div class="modal-body" id="bodyTrainingForm">
<form class="form-horizontal" id="formTrainingForm" enctype="multipart/form-data">
<div class="form-group">
<label for="inputTitle" class="col-sm-2 control-label">Title</label>
<div class="col-sm-9">
<input type="text" class="form-control" id="inputTitle" name="title" placeholder="Title">
</div>
</div>
<div class="form-group">
<label for="inputImg" class="col-sm-2 control-label">Image</label>
<div class="col-sm-9">
<img class="img-thumbnail" src="holder.js/140x140">
<input class="form-control" type="file" name="file" id="inputImage" required>
<button data-loading-text="Loading..." type="button" class="btn btn-default" id="submitUpload">Upload</button>
</div>
</div>
</form>
</div>
和PHP部分似乎工作:
public function uploadImageAsync()
{
$config['upload_path'] = base_url() . 'asset/img/thumbnails/';
$config['allowed_types'] = 'jpg|png';
$config['max_size'] = 1024 * 8;
$config['max_width'] = 140;
$config['max_height'] = 140;
$this->load->library('upload', $config);
if (!$this->upload->do_upload()) {
echo json_encode(array(
'error' => $this->upload->display_errors(),
));
return;
}
echo json_encode(array(
'success' => $this->upload->data(),
));
}
console.log (inputImage.files [0]);完美地返回我想附加到FormData的文件,这似乎不起作用。我遗漏了什么?
我明白了。我认为你应该先尝试更改文件夹的权限。我希望这能帮到你
尝试在你的upload->do_upload()中包含一个文件
if(!$this->upload->do_upload('file'){ /* error */ }
我自己想出来的!我的错误是把base_url()
加到$config['upload_path']
。我应该这样做的:
$config['upload_path'] = './assets/img/thumbnails/';