CNode

http协议content-type解析问题

问答
DDevinXian发布于12 年前最后回复12 年前5 回复9297 浏览0 收藏

今天iOS同事说上传文件的接口不能用了...VC上没看到代码改动...然后查,发现APP运行在32位iOS系统OK,64位就悲剧了...原因呢?...... 上传文档的Content-Type在64位系统上被偷偷加了一个charset属性,如下:

multipart/form-data; charset=utf-8; boundary=0xKhTmLbOuNdArY

然后看了下multiparty的源码,它匹配Content-Type的正则如下:

/^multipart\/(form-data|related);\s*boundary=(?:"([^"]+)"|([^;]+))$/i;

果然,根本就匹配不上,所以解析自然出错(Express@3.4.2)。 我对http协议syntax了解不多,还望论坛的大大们看看,这个是什么个情况?@MiguelValentine 大神

参考?

As with all multipart MIME types, each part has an optional "Content-Type" header that defaults to "text/plain". User agents should supply the "Content-Type" header, accompanied by a "charset" parameter.

查看回复

回复 (5)

M
MiguelValentine#1·12 年前

(:з」∠) 兄弟你艾特错人了。向我这种不写正则的懒人,都是用的数组解的。

M
MiguelValentine#3·12 年前
引用 DevinXian@MiguelValentine 那这个charset是应该要还是不要呀

@DevinXian 你能写这个正则,难道还不能再加个charset了?

Z
zhou-yg#4·12 年前

在中间加一段charset不就行了吗?

/^multipart\/(form-data|related);\s*(charset=[\S]*)?\s*boundary=(?:"([^"]+)"|([^;]+))$/i
H
haio#5·12 年前

@DevinXian 你用的multiparty太老了吧。。。该升级了 https://github.com/andrewrk/node-multiparty/blob/master/index.js#L32

参与回复
登录后即可参与回复。登录