Ajax图片上传到数据库 [英] ajax image upload to database

查看:328
本文介绍了Ajax图片上传到数据库的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我无法通过Ajax上传图像,每次单击提交按钮并且数据也未添加到数据库时,它总是重定向到页面.

I'm unable to upload the image by ajax,it always redirect to the page whenever I click submit button and the data is not added to the database as well.

表格

<form method="post" action="<?php echo $_SERVER['PHP_SELF'];?>" id="ImageUploadForm" enctype="multipart/form-data">
 <input type="text" name="caption" id="caption">
 <input type="file" name="image" id="ImageBrowse"/>
 <input type="submit" class="btn btn-success" value="Save" />  
</form>

ajax

ajax

$(document).ready(function (e) {
    $("#imageUploadForm").on('submit',(function(e) {
        e.preventDefault();
        $.ajax({
            url: "<?php echo base_url();?>adminpromisess/addgal",
            type: "POST",
            data:  new FormData(this),
            contentType: false,
            cache: false,
            processData:false,
            success: function(data) {
                alert(data);
                //$("#gallery-form").load(".gallery-form");
            },
            error: function() {
            }           
        });
    }));
});

将数据添加到数据库功能(控制器)

 public function addgal(){
     $caption = $this->input->post('caption');
     $promises = 00;
     $description = $this->input->post('description');
     $image = $_FILES['image']['name'];
     if(move_uploaded_file($_FILES['image']['tmp_name'], 'assets/img/upload/promises_image/'.$image)){

         $data = array(
         'caption' => $caption,
         'promises' => $promises,
         'gal_desc' => $description,
         'image' => $image
         );
         $result = $this->adminpromisesmodel->addGallery($data);
     }else{
         echo "Fail to upload file";
         die();
     }
 }

注意:保存数据库的模型(查询)是正确的,所以我没有发布

note:model (query) to save the database is correct so i didn't post it

推荐答案

尝试一下

$('#imageUploadForm').on('submit', function(ev){
  ev.preventDefault();
  var forms = document.querySelector('form#imageUploadForm');
  var request = new XMLHttpRequest();
  var formDatas = new FormData(forms);
  request.open('post','yourControllerFunction');
  request.send(formDatas);
  request.onreadystatechange = function() {
  if (request.readyState === 4) {
    if (request.status === 200) {

    //Request was OK show success message

    } else {
    // Request not OK, show error message

    }
  }
});

在控制器的操作中(它是一个cakephp代码)

In your controller's action (its a cakephp code)

if($this->request->is('post')){
   $data = $this->request->data;
   echo "<pre>",print_r($data),"</pre>";
   //You should be able to see file data in this array
}

您可以像在控制器上直接提交表单一样处理它

You can handle it just like a direct form submission on your controller

这篇关于Ajax图片上传到数据库的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆