2014-05-21 57 views
0

我使用兩個jar commons-fileupload-1.2.2.jar和commons-io-2.0.1.jar上傳我的表單中的文件。我可以上傳文件,但我的要求是隻上傳.jpg/.jpeg文件。以下是我的代碼。問題是,如果我將pdf文件的擴展名更改爲jpg文件,它會上傳。上傳文件時進行文件驗證

目前我正在使用文件的內容類型對其進行檢查,更改後的pdf的內容類型(轉換爲jpg)也是圖像/ jpeg。我無法驗證它。請幫忙

if (ServletFileUpload.isMultipartContent(request)) { 
      try { 

       List<FileItem> multiparts = new ServletFileUpload(
         new DiskFileItemFactory()).parseRequest(request); 

       for (FileItem item : multiparts) { 

        if (!item.isFormField()) { 

         filename = new File(item.getName()).getName(); 
         content = item.getContentType(); 
         System.out.println("content type: " + content); 
         System.out.println("name: " + filename); 
         sizeInBytes = item.getSize(); 


         item.write(new File(UPLOAD_DIRECTORY + File.separator + filename)); 


        } 


       } 

       if (!content.contains("jpeg")) { 
        System.out.println("Please upload jpeg file"); 

       } else { 
        // fupload = true; 
       } 



     } else { 

      response.sendRedirect("upload.jsp"); 
     } 

回答

0

當你在servlet上做它時已經太晚了,它已經上傳了。所有你能做的就是檢查名稱以.jpg等結尾。爲什麼不使用<input type="file" accept="image/*">

+0

但是當我將pdf文件重命名爲jpg,例如a.pdf到a.jpg時,代碼接受該文件。 – anonymous

+0

'accept ='image/jpeg'有什麼問題。也看看http://stackoverflow.com/questions/51438/getting-a-files-mime-type-in​​-java –

+0

如果我把一個pdf文件重命名爲jpg,「accept ='image/jpeg'」接受該pdf文件,這是錯誤的,因爲它是一種攻擊。 – anonymous