将实际文件从dropzone发送到后端

时间:2017-10-02 13:46:59

标签: ruby-on-rails-4 vuejs2 form-data dropzone

我很难从Dropzone对象中获取文件(使用Vue-Dropzone)并将它们附加到我正在使用其他参数建立的自定义formData对象上。

我想要实现的是一个带有Dropzone的表单,它通过ajax提交,我试图抓取用户选择的所有文件并创建一个对象以

的形式传递给后端
files[file_1] = file_1
files[file_2] = file_2 

等等。我使用了以下代码,但没有成功

let files = {};
  _.each(this.$refs.dropzoneID.getQueuedFiles(), (file, index) => {
    files[index] = file;
});

// console.log(files);

this.formData.append('files', files);

process_form_via_axios_call

我在后端获得的是:

params={"files"=>"[object Object]"}

虽然我期待这样的事情:

{"files" => {"file_1"=>#<ActionDispatch::Http::UploadedFile:0x007fd14c9ec940 @tempfile=#<Tempfile:/var/folders/lk/bhps4r5d3s1fzmywxlp59f480000gn/T/RackMultipart20171002-87936-1tnd839.jpg>, @original_filename="restaurant-person-woman-coffee-medium.jpg", @content_type="image/jpeg", @headers="Content-Disposition: form-data; name=\"file\"; filename=\"restaurant-person-woman-coffee-medium.jpg\"\r\nContent-Type: image/jpeg\r\n">......}

我怎样才能实现这个目标?

1 个答案:

答案 0 :(得分:0)

实际上通过这样做可以解决这个问题:

{ regex: /\$dirWithoutTrailingSlash/g, replaceValue: this.quoteFileName(this.getCodeFileDirWithoutTrailingSlash()) }

像魅力一样工作。