繁体   English   中英

Content-Transfer-Encoding in file upload request

[英]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。

此外,还有RFC2388 第3节 ,最后一段,它说:

可以对每个部分进行编码,并对“内容传输编码”头部进行编码
如果该部分的值不符合默认值,则提供
编码。

第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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM