首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在上传文件时找到原始的MIME类型?

如何在上传文件时找到原始的MIME类型?
EN

Stack Overflow用户
提问于 2016-07-08 10:33:48
回答 2查看 1K关注 0票数 0

我必须在上传时找到文件的原始内容类型(MIME类型)。

我想只允许pdf文件,但如果我重命名一个.exe fiel到.pdf flie,它的类型是显示PDF。

我想限制这类文件。

我正在使用以下代码:

代码语言:javascript
复制
if (!fileMultipart.getContentType().equalsIgnoreCase("application/pdf")) {
        msg = "Only pdf files are allowed.";
        System.out.println("Only pdf files are allowed.");
    }

还有一些在线工具可以找到原始的内容类型。我试着使用http://www.checkfiletype.com/,它可以工作。

EN

回答 2

Stack Overflow用户

发布于 2016-07-08 10:50:32

文件内容类型由上传时的用户代理/浏览器确定。正如您已经知道的,这可能被欺骗,或不正确。实际上,只有文件的内容类型才能做更多的事情。

另一种方法是在验证了内容类型之后进行更多的检查,方法是尝试使用iTextPDFBox或一些类似的库打开PDF以进行读取。如果您无法打开该文件,则可以让用户知道该文件有问题。

票数 0
EN

Stack Overflow用户

发布于 2016-07-08 13:33:53

代码语言:javascript
复制
public boolean isPDF(String fileName) {

  File file = new File(fileName);
  System.out.println("file upload isExist " + file.exists());
  boolean result = false;
  //Scanner input = null;
  try {
     Scanner input = new Scanner(new FileReader(file));
     System.out.println("fileScanner input " + input);
     while (input.hasNextLine()) {
        final String checkline = input.nextLine();
        if (checkline.contains("%PDF-")) {
           // a match!
           result = true;
           break;
        }
     }
  } catch (FileNotFoundException ex) {
     System.out.println("file upload is not valid " + file);
     Logger.getLogger(UploadContractorFile.class.getName()).log(Level.SEVERE, null, ex);
  }
  System.out.println("file upload final result " + result);
  return result;
 }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38264533

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档