私はajaxを使う前にCI 3.0.1をアップロードして画像を正常に挿入していました。私はajaxでそれをやろうとしていますもし私たちがmultipart()をフォームで使用しなければならないかもしれないので、おそらくアップロードのためのデータを送信するかもしれません。私はちょうどコントローラにデータを直接送信しているのですが、私は応答で変数を受け取る方法がわかりません
私のAjaxリクエスト関数次のとおりです。
Codeigniter:Ajaxで画像をアップロードし、dbに保存する
<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);
}
});
});
});
そして、私のコントローラのアップロードの機能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");
}
}
今の画像もアップロードフォルダに行っていない、私はそれをここに投稿します教えてください。おかげ
は書き込み可能なアップロードフォルダですか?それは公共のルートにありますか? –
はい、ルートにあります。私はすべてがうまくいきました。私はAjaxなしでそれをやっていました。 –
Javascriptは実際にファイル入力のファイルの内容を見ることができないので、内容を読むことができませんAjax経由でサーバーにデータを送信します。リロードを避けるために、ページ上のiframeにフォームを送信するなどの回避策があります。 – shamsup