2016-12-28 17 views
1

サーブレットとJSPを使用してをアップロードするイメージを実装しようとしています。サーブレットとJSPを使用してファイルをアップロード中にservletFileUpload parseRequest()コンパイルエラーが発生しました

私のJSPページは非常に単純であり、唯一の形式は次のとおりです。

<form method="post" action="${pageContext.request.contextPath}/uploader" enctype="multipart/form-data"> 
    <input type="file" name="file" value="Select an image..." /> 
    <input type="submit" value="Upload Now" /> 
</form> 

対応するサーブレットとサーブレット・マッピングがweb.xmlに記載されています。
そして、私のdoPost方法として見えます:

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 
    PrintWriter out = response.getWriter(); 

    FileItemFactory itemFactory = new DiskFileItemFactory(); 
    ServletFileUpload upload = new ServletFileUpload(itemFactory); 

    if (!contentType.equals("image/png")) { 
     out.println("Only PNG image files supported."); 
     continue; 
    } 

    try { 
     List<FileItem> items = upload.parseRequest(request); // here is an error 
     for (FileItem item : items) { 
      String contentType = item.getContentType(); 

      File uploadDir = new File(UPLOAD_DIR); 
      File file = File.createTempFile("img", ".png", uploadDir); 

      item.write(file); 

      out.println("File uploaded."); 
     } 
    } catch (FileUploadException e) { 
     out.println("Upload failed."); 
     return; 
    } 
} 

しかし、コンパイラは次の行に文句を言う:List<FileItem> items = upload.parseRequest(request);:ファイルFileUploadBase方法parseRequest(RequestContext)

は、引数には適用されません(HttpServletRequestに)。

答えHow to upload files to server using JSP/Servlet?に、この方法は、すべてのエラーを生成しませんが:

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

答えて

1

私はここにorg.apache.commons.fileupload が表示された場合は、要求がHttpServletRequestのないServletRequestContextする必要があります。

List<FileItem> items = new ServletFileUpload(new DiskFileItemFactory()).parseRequest(new ServletRequestContext(request)); 
+0

絶対に正しく!どうもありがとう。 – DimaSan

+0

ようこそ。 –

0

このコード問題を解決する必要があります

DiskFileItemFactory diskFactory = new DiskFileItemFactory(); 
diskFactory.setSizeThreshold(4000); 
diskFactory.setRepository(new File(System.getProperty("java.io.tmpdir"))); 
ServletFileUpload uploadHandler = new ServletFileUpload(diskFactory); 
List<FileItem> items = upload.parseRequest(request); 
関連する問題