当前位置: 首页 > 知识库问答 >
问题:

Spring文件上传内容类型验证,总是八位流吗?

勾海超
2023-03-14

我试图在我的Restful Spring Boot应用程序中实现pdf文件上传。

@RequestMapping(value = FILE_URL, method = RequestMethod.POST)
public ResponseDTO submitPDF(
        @ModelAttribute("file") FileDTO file) {

    MediaType mediaType = MediaType.parseMediaType(file.getFile().getContentType());

    System.out.println(file.getFile().getContentType());
    System.out.println(mediaType);
    System.out.println(mediaType.getType());

    if(!"application/pdf".equals(mediaType.getType())) {
        throw new IllegalArgumentException("Incorrect file type, PDF required.");
    }

    ... more code here ...
}

问题是,是我的Spring Controller方法出了问题,还是postman没有正确构建请求?

如果邮递员不能获得正确的内容类型,我能期望实际的客户端应用程序正确地将内容类型设置为PDF吗?

共有1个答案

太叔景曜
2023-03-14

您是否尝试过Apache Tika库来检测上传文件的mime类型?

Kotlin中的代码示例

private fun getMimeType(file: File) = Tika().detect(file)
 类似资料:
  • 在我的应用程序中,我从一个API响应接收一个文件,该响应的是。 我试图返回这个文件到前端作为

  • 我有一个第三方服务,它用文件向我的Django应用程序发出POST请求。要成功上传到Django应用程序,请求必须具有“多部分/表单数据”内容类型,但在我的案例和请求中,内容类型是“八位流”。文件总是空的。我怎么能在Django中接收八位流内容类型的文件?

  • 问题内容: 我有一个可以让人们上传文件的应用程序,表示为。但是,我要确保用户仅上传xml文件。我知道我可以使用进行此操作,但是我不知道将检查放在何处-据我所知,clean由于文件在clean运行时尚未上传,因此无法将其放在函数中。 这是模型: 问题答案: 对于后代:解决方案是使用read方法并将其传递给。

  • 问题内容: 我用来在ASP.NET应用程序中上传文件。我想限制上传的文件类型(例如:限制为.xls或.xlsx文件扩展名)。 JavaScript或服务器端验证都可以(只要服务器端验证将在文件上传之前进行-可能会上传一些非常大的文件,因此任何验证都需要在实际文件上传之前进行) 。 问题答案: 似乎您选择的选项有限,因为您希望在上传之前进行检查。我认为最好的方法是使用JavaScript来验证文件的

  • 本文向大家介绍Javascript读取上传文件内容/类型/字节数,包括了Javascript读取上传文件内容/类型/字节数的使用技巧和注意事项,需要的朋友参考一下 在网站开发的某些情况下我们需要上传文件到服务器,在这个过程中可能会对文件做一定的限制,比如说文件格式,文件大小等,在一些情况下我们上传文件其实是为了获取其中的内容在前端区域展示,这个时候就不需要将文件上传到服务器,完全可以通过Javas