2016-07-02 19 views
-1

JSPを使用してファイルをアップロードしようとしていますが、エラーが表示され、ファイルがアップロードされません。FileUploadがJSPで動作しません

アップロードに使用しているサーブレットコード。私はライン上

`List fileItems = upload.parseRequest(request);` 

を受け付けております

import java.io.File; 
import java.io.IOException; 
import java.io.InputStream; 
import java.io.PrintWriter; 
import java.nio.file.Files; 
import java.nio.file.Paths; 
import java.util.*; 
import javax.servlet.ServletContext; 
import javax.servlet.ServletException; 
import javax.servlet.annotation.*; 
import javax.servlet.http.*; 
import org.apache.tomcat.util.http.fileupload.FileItem; 
import org.apache.tomcat.util.http.fileupload.FileUploadException; 
import org.apache.tomcat.util.http.fileupload.RequestContext; 
import org.apache.tomcat.util.http.fileupload.disk.DiskFileItemFactory; 
import org.apache.tomcat.util.http.fileupload.servlet.ServletFileUpload; 
import org.apache.tomcat.util.http.fileupload.servlet.ServletRequestContext; 

/** 
* 
* @author Hemal 
*/ 
@MultipartConfig 
public class UploadServlet extends HttpServlet { 

    private static final long serialVersionUID = 1L; 

    private static final String DATA_DIRECTORY = "data"; 
    private static final int MAX_MEMORY_SIZE = 1024 * 1024 * 2; 
    private static final int MAX_REQUEST_SIZE = 1024 * 1024; 

    @Override 
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 

     File file; 
     int maxFileSize = 5000 * 1024; 
     int maxMemSize = 5000 * 1024; 
     ServletContext context = request.getServletContext(); 
     String filePath = context.getInitParameter("file-upload"); 
     PrintWriter out=response.getWriter(); 
     // Verify the content type 
     String contentType = request.getContentType(); 
     if ((contentType.contains("multipart/form-data"))) { 

      DiskFileItemFactory factory = new DiskFileItemFactory(); 
      // maximum size that will be stored in memory 
      factory.setSizeThreshold(maxMemSize); 
      // Location to save data that is larger than maxMemSize. 
      factory.setRepository(new File("data")); 

      // Create a new file upload handler 
      ServletFileUpload upload = new ServletFileUpload(factory); 
      // maximum file size to be uploaded. 
      upload.setSizeMax(maxFileSize); 
      try { 
       // Parse the request to get file items. 
       List fileItems = upload.parseRequest(request);//ERROR ON THIS LINE 

       // Process the uploaded file items 
       Iterator i = fileItems.iterator(); 


       while (i.hasNext()) { 
        FileItem fi = (FileItem) i.next(); 
        if (!fi.isFormField()) { 
         // Get the uploaded file parameters 
         String fieldName = fi.getFieldName(); 
         String fileName = fi.getName(); 
         boolean isInMemory = fi.isInMemory(); 
         long sizeInBytes = fi.getSize(); 
         // Write the file 
         if (fileName.lastIndexOf("\\") >= 0) { 
          file = new File(filePath 
            + fileName.substring(fileName.lastIndexOf("\\"))); 
         } else { 
          file = new File(filePath 
            + fileName.substring(fileName.lastIndexOf("\\") + 1)); 
         } 
         fi.write(file); 
         out.println("Uploaded Filename: " + filePath 
           + fileName + "<br>"); 
        } 
       } 

       } catch (Exception ex) { 
       System.out.println(ex); 
      } 
     } 
    } 
} 

エラーは、私は多くのオプションを試みたが成功しなかった HttpServletRequest cannot be converted to RequestContext

です。

ありがとうございました。

EDIT JSPでのファイルアップロードで

その他のリンクは、ユーザー定義されたディレクトリに実際のファイルを保存せずに、コードの一部を示しています。私はディレクトリにもファイルを保存するためのコードを持っていたいと思います。だから私はこれが重複した質問ではないと思う。

+0

エラーメッセージを表示する必要があります。 – Elvermg

+0

[Apache Tomcat 7.0.40.0を使用しているときにサーブレットでファイルのアップロードエラーが発生する可能性があります](http://stackoverflow.com/questions/16768086/file-upload-error-in-servlet-while-using-apache-tomcat-7 -0-40-0)または http://stackoverflow.com/questions/17590108/jsp-upload-file-failed – Taha

+0

@Elvermg私は既に問題のエラーメッセージを表示しました。 – Hemal

答えて

0

あなたはこれを使用することができます:

InputStream content = uploadedFile.getInputStream(); 
byte[] fileArray = new byte[chooseTheSize]; //Here you must use a size big enough. 
content.read(fileArray); 

// fileArrayはあなたのファイルです。

関連する問題