通过 requests/locust 上传图片时得到 text/plain 的 mimetype
Got text/plain for mimetype when upload image by requests/locust
当我使用像 Postman 这样的开发工具上传文件时,我的 Express.js server using multer
import multer from 'multer';
const upload = multer();
app.post('/api/upload-file', upload.single('file'), (req, res) => {
console.log(req.file);
res.sendStatus(200);
});
可以正确解析文件,包括 mimetype
字段并打印
{
fieldname: 'file',
originalname: 'my.png',
encoding: '7bit',
mimetype: 'image/png',
buffer: <Buffer ...>,
size: 9693
}
但是,当我使用 locust (for load testing, and it is requests 支持)通过这两种方法上传相同的文件时:
from requests_toolbelt.multipart.encoder import MultipartEncoder
@task
def upload_img_1(self):
file = open('path/to/my.png', 'rb')
self.client.post(
'/api/upload-file',
files={'file': file})
@task
def upload_img_2(self):
file = open('path/to/my.png', 'rb')
m = MultipartEncoder(
fields={'file': ('my.png', file, 'image/png')})
self.client.post(
'/api/upload-file',
files={'file': m})
我在 Express.js 服务器中得到的 mimetype
是 text/plain
这是错误的。
{
fieldname: 'file',
originalname: 'my.png',
encoding: '7bit',
mimetype: 'text/plain',
buffer: <Buffer ...>,
size: 9693
}
如何得到正确的mimetype
?
终于在
def upload_img(self):
file = open('path/to/my.png', 'rb')
files = {
'file': ('my.png', file, 'image/png'),
}
self.client.post(
'/api/upload-file',
files=files)
这一次 Express.js 服务器可以正确获取 mimetype
文件作为 image/png
。
希望对以后遇到同样问题的人有所帮助。
当我使用像 Postman 这样的开发工具上传文件时,我的 Express.js server using multer
import multer from 'multer';
const upload = multer();
app.post('/api/upload-file', upload.single('file'), (req, res) => {
console.log(req.file);
res.sendStatus(200);
});
可以正确解析文件,包括 mimetype
字段并打印
{
fieldname: 'file',
originalname: 'my.png',
encoding: '7bit',
mimetype: 'image/png',
buffer: <Buffer ...>,
size: 9693
}
但是,当我使用 locust (for load testing, and it is requests 支持)通过这两种方法上传相同的文件时:
from requests_toolbelt.multipart.encoder import MultipartEncoder
@task
def upload_img_1(self):
file = open('path/to/my.png', 'rb')
self.client.post(
'/api/upload-file',
files={'file': file})
@task
def upload_img_2(self):
file = open('path/to/my.png', 'rb')
m = MultipartEncoder(
fields={'file': ('my.png', file, 'image/png')})
self.client.post(
'/api/upload-file',
files={'file': m})
我在 Express.js 服务器中得到的 mimetype
是 text/plain
这是错误的。
{
fieldname: 'file',
originalname: 'my.png',
encoding: '7bit',
mimetype: 'text/plain',
buffer: <Buffer ...>,
size: 9693
}
如何得到正确的mimetype
?
终于在
def upload_img(self):
file = open('path/to/my.png', 'rb')
files = {
'file': ('my.png', file, 'image/png'),
}
self.client.post(
'/api/upload-file',
files=files)
这一次 Express.js 服务器可以正确获取 mimetype
文件作为 image/png
。
希望对以后遇到同样问题的人有所帮助。