2017-07-27 36 views
0

我在我的注册表单中使用dropzoneJS。我有DropZone和一个单独的输入文件类型的窗体。我可以将其他输入文本与dropzone一起发送,但输入文件类型不会。我正在使用AJAX请求上传文件并发送附加数据。用DropzoneJs发送一个单独的输入类型文件

这里是我的形式

<form enctype="multipart/form-data"> 
    <input type="text" name="name" id="name" placeholder="Full Name" > 
    <input type="email" name="email" id="email" placeholder="Email Address" > 
    <input type="password" name="password" id="password" > 

    <input type="file" name="avatar" id="avatar" > 

    <div class="dropzone-container file_upload" id="file_upload_container"> 
     <div class="dz-message default-dropzone-text" data-dz-message> 
     <span class="text-default">Drag or click here to upload your credentials (i.e. Certificates, CV etc.)</span> 
     </div> 
     <div class="fallback"> 
      <input name="file[]" type="file" id="file" multiple required /> 
     </div> 
    </div> 
    <button type="button" id="submit">Submit</button> 
</form> 

,这里是我的javascript代码

Dropzone.autoDiscover = false; 
var myDropzone = new Dropzone("div.file_upload", { 
    url : sendData, 
    headers: { 
     'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content'), 
    }, 
    autoProcessQueue: false, 
    addRemoveLinks: true, 
    uploadMultiple: true, 
    parallelUploads: 100, 
    maxFiles: 100, 
    acceptedFiles: 'application/pdf, .doc, .docx, .pub, .jpeg, .jpg, .png, .gif, .xls, .xlsx, .ppt, .pptx', 
    maxFilesize: 500, 
    paramName: "file", 
    init: function(){ 
     $("#submit").click(function(e) { 
      e.preventDefault(); 
      e.stopPropagation(); 
      myDropzone.processQueue(); 
     }) 
     this.on("sendingmultiple", function(data, xhr, formData) { 
      formData.append("name", $("#name").val()); 
      formData.append("email", $("#email").val()); 
      formData.append("password",$('#password').val()); 
      formData.append("avatar",$('#avatar')); 
     }); 
     this.on("successmultiple", function(files, response) { 
      console.log(response); 
     }); 
     this.on("errormultiple", function(files, response) { 
      myDropzone.removeAllFiles(); 
     }); 
    } 
}); 

回答

0

好,我知道了,我试图对象发送到API,而不是实际的文件,所以我换成

formData.append("avatar",$('#avatar')); 

formData.append("avatar",$('#avatar')[0].files[0]); 

它工作!

相关问题