我正在从客户端向服务器发送多部分请求,如下所示:
FileBody file2 = new FileBody(new File("./test2.txt"));
FileBody image1 = new FileBody(new File("./DSC_0064.JPG"));
如您所见,其中一个文件是 txt,另一个文件是 JPG 图像。
在服务器上,我收到请求并获取每个部分的 header ,然后得到:
------------Part 1------------
content-disposition=form-data; name="test2"; filename="test2.txt"
content-type=application/octet-stream
content-transfer-encoding=binary
------------Part 2------------
content-disposition=form-data; name="image1"; filename="DSC_0064.JPG"
content-type=application/octet-stream
content-transfer-encoding=binary
如您所见,它们的内容类型都是application/octet-stream
。如何确定动态环境中的实际类型?它是图像吗?一段文字?视频?
我不能依赖文件名,因为用户可以将其更改,例如从 txt 更改为 png,然后我的服务器会认为它是图像,但他会因此而异常(exception)。
最佳答案
那是因为您没有设置 MIME 类型。您可以使用其他构造函数 FileBody(file, contentType)
需要一个内容类型:
FileBody file2 = new FileBody(new File("./test2.txt"), ContentType.TEXT_PLAIN);
FileBody image1 = new FileBody(new File("./DSC_0064.JPG"), ContentType.create("image/jpeg"));
关于java - 如何知道多部分请求中该部分的真实内容类型是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32693287/