[英]Content-Transfer-Encoding in file uploading request
我正在尝试使用XMLHTTPRequest上传文件,并发送此标头:
Content-Type:multipart/form-data, boundary=xxxxxxxxx
--xxxxxxxxx
Content-Disposition: form-data; name='uploadfile'; filename='123_logo.jpg'
Content-Transfer-Encoding: base64
Content-Type: image/jpeg
/*base64data*/
但是在服务器端PHP忽略标题“Content-Transfer-Encoding:base64”并将base64未解码的数据直接写入文件!
有什么办法可以解决吗?
ps使用base64发送数据非常重要
泽维尔的回答听起来不对。 RFC2616也有这个说法(第3.7节):
通常,HTTP对多部分消息体的处理方式与此不同
任何其他媒体类型:严格作为有效载荷。 唯一的例外是
“多/字节范围”
在我看来,RFC2616的第19.4节正在讨论HTTP作为一个整体,在某种意义上它使用类似于MIME的语法(如头格式),但不符合MIME。
可以对每个部分进行编码,并对“内容传输编码”头部进行编码
如果该部分的值不符合默认值,则提供
编码。
第4.3节详细阐述了这一点:
4.3编码
虽然HTTP协议可以传输任意二进制数据,但邮件传输的默认值是7BIT编码。 如果值不符合默认编码,则可能需要对为部件提供的值进行编码并提供“content-transfer-encoding”头。 [有关详细信息,请参阅RFC 2046的第5节 。]
我之前的回答是错的
Content-Transfer-Encoding
可能出现在复合体中
http://www.ietf.org/rfc/rfc2616.txt
这有几个后果。 复合类型的实体主体可以包含许多主体部分,每个主体部分都有自己的MIME和HTTP头(包括Content-MD5,Content-Transfer-Encoding和Content-Encoding头)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.