javascript - 无法使用ajax上传文件

标签 javascript php jquery ajax file-upload

我正在尝试使用ajax上传表单数据,但问题是我无法上传图像/文件。

表单代码

<form class="form-inline" id="form_add"  enctype="multipart/form-data"> 
  <input type="file" id="file-input" name="file-input"  accept="image/*" >

  <input type="text" class="form-control name" id="fname" placeholder="First Name" >                            
  <select class="location" id="location" >
    <option value="">Location</option>
    <?php foreach($location as $loc): ?>
      <option value="<?php echo $loc->city.', '.$loc->state;?>" ><?php echo $loc->city.', '.$loc->state;?></option>
    <?php endforeach; ?>
  </select>
  <button type="submit" class="save_btn"  id="submit" > <img src="save.png" class="Save">   </button>
</form>

脚本代码

<script>
  $("#submit").click(function()
    {
      event.preventDefault();
      var filename = $('input[type=file]').val();
      var fname = $("#fname").val();
      var location = $("#location").val();
      if(filename != "" || fname != "" || location != "")
            {
              $.ajax({
                type: "POST",
                url: "Data/add_data",
                data: {
                        filename : filename,
                        fname:fname,
                        location:location
                      },
                cache: false,
                success: function(result){
                  console.log(result);
                }});
            }
    });
</script>

后端代码

$ImageFile = $this->input->post('filename');
$config['upload_path'] = './assets/client_img/.';
$config['allowed_types'] = 'gif|jpg|png|jpeg';
$config['max_size'] = 1024 * 8;
$config['encrypt_name'] = TRUE;
$this->load->library('upload', $config);

if (!$this->upload->do_upload('ImageFile')) 
    {
     $error1 = array('error' => $this->upload->display_errors());
     print_r($error1);
    }
else
    {
      $data1 = $this->upload->data();
      echo $data1['file_name'];
    }

在后端代码中,我获取 $ImageFile 的值为 C:\fakepath\pic.jpg 但该文件未上传,并且错误提示

You did not select a file to upload

谁能告诉我如何上传文件

最佳答案

$("#submit").click(function ()
{
    event.preventDefault();
    var filename = $('input[type=file]').val();
    var fname = $("#fname").val();
    var location = $("#location").val();


    if (filename != "" || fname != "" || location != "")
    {
        var formData = new FormData();
        formData.append('filename', $('input[type=file]')[0].files[0]);
        formData.append('fname', fname);
        formData.append('location', location);
        $.ajax({
            type: "POST",
            url: "Data/add_data",
            data: formData,
            contentType: false,
            processData: false,
            cache: false,
            success: function (result) {
                console.log(result);
            }});
    }
});

关于javascript - 无法使用ajax上传文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48822445/

相关文章:

javascript - onclick 复选框将复选框值附加到 URL

PHP json_encode 和 XSS

php - 使用(客户端)javascript 直接连接到 Redis?

Jquery ui拖放droppable "drop"事件

javascript - 如何使用 CSS3 和 Javascript 创建双范围 slider ?

javascript - Jquery 灯箱不向下延伸

Jquery - 动态 DIV onclick 绑定(bind)

javascript - 删除 javascript/jquery 中映射到 json 的图像

javascript - 在javascript中设置对象数组的顺序

php - 如何获取该对象中的值?