【发布时间】:2017-11-14 22:45:43
【问题描述】:
我正在尝试使用标准 HTML input 和 type="file" 实现具有多选支持的简单 AJAX 图像上传器。 JS上传代码如下:
var files = document.getElementById("txtFiles").files;
var formData = new FormData();
for (var file = 0; file < files.length; file++) {
formData.append("userimage", files[file], name)
}
//throw up a loading bar while we're uploading
util.loaderShow("Uploading, please wait...");
$.ajax({
url: '#{upload_alert_image_url}',
data: formData,
processData: false,
contentType: 'multipart/form-data',
type: 'POST',
success: function() {
util.loaderHide();
alert("Got success!");
finish_upload();
},
error: function(e) {
util.loaderHide()
alert("Upload failed: "+e);
},
complete: function() {
util.loaderHide();
}
})
在 Rails 方面,现在request.body 只是简单地保存到一个临时文件中,并且在该临时文件中是来自上述 JS sn-p 的请求的主体,正如预期的那样。
在不必自己编写多部分/表单数据解析器的情况下获取该数据的正确方法是什么?是否有某个函数可以获取这些原始数据并通过包含的上传输出某种哈希或数组?
我一直在谷歌搜索和搜索 SO 和 Rails 文档一两个小时,试图找到答案。有各种各样的 gem 可以处理文件上传(其中大多数都有我不想要的其他东西)以及multipart-parser,我已经检查了这些...但是考虑到 multipart/form-data旧且有用,我很难相信在我不寻找的地方没有现成的支持。 Rack::Middleware 声称有一个 .extract_multipart 类方法,根据其文档,但我不知道如何访问它。
那么...应该如何接收 POST'd multipart/form-data?
谢谢
汤姆
【问题讨论】:
标签: javascript ruby-on-rails ruby post multipartform-data