java - 如何知道多部分请求中该部分的真实内容类型是什么

标签 java http-post mime-types multipartform-data multipart

我正在从客户端向服务器发送多部分请求,如下所示:

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/

相关文章:

java - java中的json缺少方括号

java - 使用 Content-Type header 从 eml 文件中提取附件名称

javascript - 如何从 base64 字符串获取 MIME 类型?

java - 返回集合中所有值的总和以及特定值的总和的两种方法

java - Java 中是否可以使用默认值定义方法参数?

java - 为什么我的executeQuery挂起?

Android:通过 Gmail 共享 zip 文件

java - 将 csv 文件读入二维数组

android - 带有 header 和正文的 HTTPPost 方法

http - 如何在POST数据包中添加HTTP头?