多部分/表单数据使用什么编码?是否可以使用JQuery对数据进行编码?
实际上,我想使用jQuery将图片发送到服务器,而不使用html表单。但我希望检索与使用encode类型的html表单接收到的数据相同的数据:多部分/表单数据使用什么编码?是否可以使用JQuery对数据进行编码?,jquery,file-upload,encoding,multipartform-data,Jquery,File Upload,Encoding,Multipartform Data,实际上,我想使用jQuery将图片发送到服务器,而不使用html表单。但我希望检索与使用encode类型的html表单接收到的数据相同的数据: multipart/form-data 我使用HTML5文件阅读器: 但是当我使用FileReader.readAsText(Blob | File,opt_encoding)函数时。我检索到的数据的编码与html表单的编码不同 “多部分/表单数据”使用什么编码?在将数据发送到我的服务器之前,是否可以使用jquery或javascript对数据进行编码
multipart/form-data
我使用HTML5文件阅读器:
但是当我使用FileReader.readAsText(Blob | File,opt_encoding)
函数时。我检索到的数据的编码与html表单的编码不同
“多部分/表单数据”使用什么编码?在将数据发送到我的服务器之前,是否可以使用jquery或javascript对数据进行编码
//编辑
学校:
多部分/表单数据==>未编码任何字符。使用具有文件上载控件的表单时,此值是必需的
我遇到的问题是,当我从FileReader检索数据时,它与从HTML表单数据检索的数据不同
对于同一张图片:
使用html表单:
\xff\xd8\xff\xe1\x00\x18Exif\x00\x00II*\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xec\x00\x11Ducky\x00\x01\x00\x04\x00\x00\x00U\x00\x00\xff\xe1\x03)http://ns.adobe.com/xap/1.0/\x00<?xpacket begin="\xef\xbb\xbf" id="W5M0MpCehiHzreSzNTczkc9d"?>...
\xff\xd8\xff\xe1\x00\x18Exif\x00\x00II*\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf\xec\x00\x11Ducky\x00\x01\x00\x04\x00\x00\x00\x00U\x00\x00\x00\xf\x01\x03)http://ns.adobe.com/xap/1.0/\x00。。。
使用FileReader.readAsText():
\xc3\xbf\xc3\xc98\xc3\xbf\xc1\\u0000\\u0018Exif\\u0000\\u0000II*\\u0000\\b\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\xc3\xbf\xbf\xc3\xcxc3\u0000\\u0011decky\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0004\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\xcf\u0000http://ns.adobe.com/xap/1.0/\\u0000
如何检索相同的数据 您应该使用获取非文本文件的文件内容
此外,当您尝试发送数据时,它将被编码,为了防止这种情况发生,您可以使用它的非标准且仅在Gecko(firefox)中可用。这里有一个使用塑料填充的
当然,这一切都是微不足道的,因为支持文件Api和Uint8Array的浏览器也支持好的,我在测试很多解决方案时发现了答案,我发现的有点奇怪 实际上,我使用函数
FileReader.readAsDataURL()
将数据以Base64格式发送到服务器
然后,我split(',')
数据以仅获取服务器端的Base64数据我使用my_Base64\u data\u decoded=Base64.b64解码(my_Base64\u data\u encoded)
起初,我使用“boto”将这些数据发送到Amazon,并使用以下命令对数据进行序列化:cStringIO.StringIO(my_base64_data_decoded)
,但它不起作用
我创建了一本字典我的字典:
我做了我的dict['data']=base64.b64解码(我的base64\u数据\u编码)
然后:cStringIO.StringIO(我的dict['data'])
就成功了
现在我的问题是在插入字典时对数据做了什么处理
但至少我找到了答案。像这样?我使用FileReader.readAsBinaryString
检索完全相同的信息,实际上我的客户端和服务器之间的编码没有区别……我认为仅仅FileReader的功能并没有提供与HTML表单相同的编码。问题是:如何检索相同的编码?
\xc3\xbf\xc3\x98\xc3\xbf\xc3\xa1\\u0000\\u0018Exif\\u0000\\u0000II*\\u0000\\b\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\xc3\xbf\xc3\xac\\u0000\\u0011Ducky\\u0000\\u0001\\u0000\\u0004\\u0000\\u0000\\u0000U\\u0000\\u0000\xc3\xbf\xc3\xa1\\u0003)http://ns.adobe.com/xap/1.0/\\u0000<?xpacket begin=\\"\xc3\xaf\xc2\xbb\xc2\xbf\\" id=\\"W5M0MpCehiHzreSzNTczkc9d\\"?>
if (!XMLHttpRequest.prototype.sendAsBinary){
XMLHttpRequest.prototype.sendAsBinary = function(datastr) {
function byteValue(x) {
return x.charCodeAt(0) & 0xff;
}
var ords = Array.prototype.map.call(datastr, byteValue);
var ui8a = new Uint8Array(ords);
this.send(ui8a.buffer);
}
}