PHP AJAX Image Uploading with FormData

后端 未结 3 758
野的像风
野的像风 2020-12-16 06:42

I am relatively new to jQuery and Ajax functions, but have been working with Ajax forms over the past few days. I have come to a problem with file uploads however when tryin

相关标签:
3条回答
  • 2020-12-16 07:03

    Try with this:

    var formData = $('form.upload-form').serialize();
    
    0 讨论(0)
  • 2020-12-16 07:18

    This will work for one or multiple files.

    $('input:file').on('change', function () {  
    
     var data = new FormData();
    
     //Append files infos
     jQuery.each($(this)[0].files, function(i, file) {
         data.append('file-'+i, file);
     });
    
     $.ajax({  
         url: "my_path",  
         type: "POST",  
         data: data,  
         cache: false,
         processData: false,  
         contentType: false, 
         context: this,
         success: function (msg) {
              alert(msg);
          }
      });
    });
    

    Then

    $_FILES['file-0']
    $_FILES['file-1']
    [...]
    

    But be careful that using FormData doesn't work on IE before IE10

    0 讨论(0)
  • 2020-12-16 07:19

    You need to set processData and contentType in your ajax call ( also added id to your input element in order to fetch the file contents).

    HTML

        <form class="upload-form">
             <input type="file" id="photo" name="input_photo" class="input_photo" /> 
        </form>
    

    JS

      $(function() {
            $('.input_photo').on("change",function() {    
                var file = document.getElementById("photo").files[0]; //fetch file
                var formData = new FormData();                     
                formData.append('file', file); //append file to formData object
    
                $.ajax({
                    url: "upload.php",
                    type: "POST",
                    data: formData,
                    processData: false, //prevent jQuery from converting your FormData into a string
                    contentType: false, //jQuery does not add a Content-Type header for you
                    success: function (msg) {
                        alert(msg)
                    }
                });
            });
        });
    
    0 讨论(0)
提交回复
热议问题