我在我的应用中遇到一个问题,如果文件是从Microsoft Windows发送的,那么与上传文件关联的Content-Type
错误,提供application/octet-stream
,如果从Mac发送,则可以,给text/csv
。修复我的代码后不依赖于请求中的mime类型,我想在我的一个测试中模拟这个条件。
鉴于以下请求,其中包括JSON字符串表单字段和文件附件using supertest:
request(app)
.post('/some/where')
.field('someFormData', JSON.stringify(formData))
.attach('someFile', 'someFile.csv')
.expect(400)
.end(done);
如何更改附件的内容类型?看看Edge的网络标签,我想看到以下请求的以下内容:
-----------------------------7e13121340602
Content-Disposition: form-data; name="someFormData"
{.............}
-----------------------------7e13121340602
Content-Disposition: form-data; name="someFile"; filename="someFile.csv"
Content-Type: application/octet-stream
ÿØÿà
(带点的JSON字符串已被省略)
(而不是显示text/csv
,我想模拟错误的内容类型。)
答案 0 :(得分:1)
使用附件 contentType 选项对我有用:
request(app)
.post('/validateCertificate')
.set('Content-type', 'multipart/form-data')
.field('passphrase', '1234')
.attach(
'pfx',
'./src/build-request/test-certs/correct.pfx',
{ contentType: 'application/x-pkcs12' },
)
.expect(200))
答案 1 :(得分:0)
使用.set()设置所需的内容类型。或任何类型的标题。
答案 2 :(得分:0)
request(app)
.post('/some/where')
.field('someFormData', JSON.stringify(formData))
.set('Content-Type', 'application/octet-stream')
.attach('someFile', 'someFile.csv')
.expect(400)
.end(done);