Ajax请求负载正文的格式不正确
Ajax request payload body not formatted properly
我在AJAX POST中设置了我的头,POSTing工作得很好,但请求有效负载主体的格式不是我想要的。
for (var i = 0; i < files.length; i++) {
var boundary = '--AJAX--' + b.util.randomString();
var fileName = files[i].fileName;
var fileSize = files[i].fileSize;
var fileType = files[i].type;
var parts = [];
var part = '';
part += 'Content-Disposition: file;' + CRLF;
part += 'name= "' + fieldName + '"; ' + CRLF;
part += 'filename="' + fileName + '"' + CRLF;
part += 'Content-Type: ' + fileType + ';' + CRLF;
part += 'name="' + 'timestamp' + '"' + CRLF + CRLF;
part += getDateTime() + CRLF;
parts.push(part);
var data = '--' + boundary + CRLF;
data += parts.join('--' + boundary + CRLF);
data += '--' + boundary + '--' + CRLF;
// Wrap in a closure to preserve our increment value [i]
(function(i) {
files = $.extend(true, {}, files);
$.ajax({
url: $form,
type: 'POST',
beforeSend: function(xhr) {
xhr.setRequestHeader('Content-Type', 'multipart/form-data; boundary=' + boundary);
xhr.setRequestHeader('X-File-Name', fileName);
xhr.setRequestHeader('X-File-Size', fileSize);
xhr.setRequestHeader('X-File-Type', fileType);
},
data: {
userfile: data
},
success: function(data) {
},
error: function(e) {
}
});
})(i);
}
正在格式化为:
/*
userfile=--AJAX-----------------------------2Bw0sHPkE4%0D%0AContent-Disposition%3A+file%3B%0D%0Aname%3D+%22userfile%5B%5D%22%3B+filename%3D%22MPK0l.jpg%22%0D%0AContent-Type%3A+image%2Fjpegname%3D%22timestamp%22%0D%0A%0D%0A1330556315.828%0D%0A--AJAX-----------------------------2Bw0sHPkE4--%0D%0A
*/
这显然是无视我所有的断线和马车返回。
我是否必须显式创建我的xhr对象并使用xhr.send(),或者我可以将jQuery的ajax()与此一起使用?
RFC1867:中的一些引号
如果选择了多个文件,则应将它们一起传输使用multipart/混合格式。
内容类型:多部分/表单数据*,*边界=AaB03x comma is used, not a semicolon
毕竟,我不确定原始POST数据是否可以通过xhr准备。
决定从创建XHR对象,而不是使用jQuery的ajax()
。
for (var i = 0, f; f = files[i]; i++) {
(function(i) {
var xhr = new XMLHttpRequest();
var reader = new FileReader();
xhr.open('POST', $form, true);
reader.onload = function(e) {
var boundary = '--AJAX--' + b.util.randomString();
var binaryFile = e.target.result;
var fileName = files[i].fileName;
xhr.setRequestHeader('Content-Type', 'multipart/form-data; boundary=' + boundary);
xhr.setRequestHeader('X-File-Name', files[i].fileName);
xhr.setRequestHeader('X-File-Size', files[i].fileSize);
xhr.setRequestHeader('X-File-Type', files[i].type);
var parts = [];
var part = '';
part += 'Content-Disposition: file; ';
part += 'name="' + fieldName + '"' + CRLF;
part += 'Content-Type: ' + files[i].type;
part += CRLF + 'Content-Transfer-Encoding: binary' + CRLF + CRLF;
part += binaryFile + CRLF;
parts.push(part);
part = 'Content-Disposition: form-data; ';
part += 'name="' + 'timestamp' + '"' + CRLF + CRLF;
part += getDateTime() + CRLF;
parts.push(part);
var data = '--' + boundary + CRLF;
data += parts.join('--' + boundary + CRLF);
data += '--' + boundary + '--' + CRLF;
xhr.sendAsBinary(data);
};
reader.readAsBinaryString(files[i]);
})(i);
}
相关文章:
- 由于布尔值的变化,Django视图中的字符串格式不正确
- 文档的第一行.写的格式不正确,有时无法显示
- 谷歌地图API'.pac项目:first'返回格式不正确
- 格式不正确的json/javascript
- 下载pdf格式不正确
- D3:“SVG4601:SVG 路径数据的格式不正确,无法完全解析
- 为什么它说输入数据数组的格式不正确 jqchart.
- 解码URI抛出错误“URI格式不正确”
- Amchart 和 Ajax 获取格式不正确的数据
- XML 解析错误:使用浏览器内置解析器解析 XML 字符串时格式不正确
- 为什么我会收到“格式不正确”错误
- 使用 jquery 访问 JSON 时格式不正确的错误
- 图像属性格式不正确
- 什么意思是“服务器标签格式不正确”,这个按钮会发生什么
- 读取具有“'”的 JSON 字符串(格式不正确?
- Javascript/JSON 错误:格式不正确
- 控制台中的 GeoJson “格式不正确”消息,并且显示为未定义
- 购物清单 Javascript 程序列表项的文本格式不正确
- PHP 中的 JSON 格式不正确,无法从 JQuery Ajax 请求中格式化
- 使用AngularJS循环访问JSON文件时出现“格式不正确”的Firefox错误