Codeigniter:通过Ajax上传图像并存储在数据库中
Codeigniter: Uploading image through Ajax and storing in db
我使用的是CI 3.0.1,在我使用ajax之前,我成功地将图像上传并插入数据库,我想在尝试使用ajax时,我错过了一些甚至不能发送数据上传的东西,可能是因为我们必须在表单中使用multipart(),而在ajax中,我们只是将数据直接发送到控制器,还有一件事我不知道如何接收响应中的变量
我的Ajax请求函数是:
<script type="text/javascript">
$(document).ready(function() {
alert("thirddddddddd");
$('#btnsubmit').click(function()
{
alert("i got submitted");
event.preventDefault();
var userfile = $("input#pfile").val();
alert("uploading");
$.ajax({
url: '<?php echo base_url(); ?>upload/do_upload', //how to receive var here ?
type: 'POST',
cache: false,
data: {userfile: userfile},
success: function(data) {
alert(data);
$('.img_pre').attr('src', "<?php echo base_url().'uploads/' ?>");
$('.dltbtn').hide();
},
error: function(data)
{
console.log("error");
console.log(data);
alert("Error :"+data);
}
});
});
});
我的控制器Upload的函数do_Upload是:
public function do_upload()
{
$config['upload_path'] = './uploads/'; #$this->config->item('base_url').
$config['allowed_types'] = 'gif|jpg|png|jpeg';
$this->upload->initialize($config);
if ( ! $this->upload->do_upload('userfile'))
{
$error = array('error' => $this->upload->display_errors());
$this->load->view('layouts/header');
$this->load->view('home_page', $error);
$this->load->view('layouts/footer');
}
else
{
$data = array('upload_data' => $this->upload->data());
$imagedata = $this->input->post('uerfile');
$session_data = $this->session->userdata('logged_in');
$id = $session_data['id'];
$result = $this->model_edit->update_dp($id, $imagedata);
$image_name = $result->images;
$this->session->set_userdata('image', $image_name);
echo json_encode($name = array('image' => $image_name));
// $image_name = $this->upload->data('file_name');
// $data = array('upload_data' => $this->upload->data());
// redirect("account");
}
}
现在图像甚至不会被上传到文件夹,如果需要任何其他文件,请告诉我我会在这里发布。感谢
不能使用$("input#pfile").val();
发送文件数据
var len = $("#pfile").files.length;
var file = new Array();
var formdata = new FormData();
for(i=0;i<len;i++)
{
file[i] = $("input#pfile").files[i];
formdata.append("file"+i, file[i]);
}
并从ajax 发送formdata
作为数据
希望它能有所帮助!
尝试使用以下ajax代码
var formData = new FormData($('#formid'));
$.ajax({
url: '<?php echo base_url(); ?>upload/do_upload',
data: formData ,
cache: false,
contentType: false,
processData: false,
type: 'POST',
success: function(data){
alert(data);
}
});
根据您的代码,文件内容可能不会通过ajax发送。尝试使用上面代码中提到的属性。
相关文章:
- 如何在本地存储(或其他数据库)上安全地保存敏感访问代码
- Codeigniter:通过Ajax上传图像并存储在数据库中
- 使用node-js上传文件,并将表单信息存储在数据库(mysql)中
- 如何离线存储数据库,在线时共享到服务器
- 我的地图数据's不会使用php存储在mysql数据库中
- 将动态feild数据存储到jquery-mobile和php-mysql中的数据库中
- 将Javascript对象存储在Wordpress用户数据库中
- 为数据库存储设置角度日期格式
- 如何获取所有旅行模式的距离和持续时间,例如驾驶,公交,骑自行车,在我的页面中步行以及将其存储在数据库中
- 我想从网站收集数据并使用PHP将它们存储在数据库中
- PHP 函数将随机值存储到数据库中
- 当我按下getroute按钮时,我希望我的javascript变量存储在数据库中
- 如何获取数据库值并存储在javascript变量中
- 将数据库查询存储在nodejs中(使用socket.io)
- 输入法所见即所得编辑器不在mysql数据库中存储值
- 如何在JavaScript中存储和检索MySQL数据库中的JSON数据
- 如何使用javascript将数据存储到mysql数据库中
- Html5存储本地存储数据库文件
- 在不设置服务的情况下安全地存储数据库密码
- 使用XHR将图像发送到在线存储/数据库