参考
由于不能直接上传,需要将上传文件以base64的编码写入到一个临时文件(tmp.txt)中,写入方法参考上述链接:
格式类似于
--1234567890
Content-Disposition: form-data; name="file"; filename="test.jpg"
Content-Type: application/jpeg
Content-Transfer-Encoding: base64
[上面要留一行换行符号,这里是文件base64字符串数据的位置]
--1234567890
Content-Disposition: form-data; name="descripe"
这里是descripe字段的值
--1234567890--
Linux下可以快速用base64 test.jpg >> post.txt
将test.jpg转为base64字符串,构造好post.txt请求文件后,就可以用命令进行压测文件上传了:
ab -n 1000 -c 10 -T "multipart/form-data; boundary=1234567890" -p post.txt http://127.0.0.1:5001/
1234567890
作为边界分隔符,可以替换成任意的,格式类似于
----TTTTT
----TTTTT
----TTTTT--
此时----TTTTT
就是分隔符,注意结尾的--
。
有个麻烦的地方是文件以base64字符串传输的,接收方需要将base64解码后保存,不然保存的是这段base64的字符串。