Java Webアップロードコンポーネント使用:JSPOpload


JSPOploadについての紹介はgoogleに行って、jarと使用例は以下の添付ファイルでダウンロードすることができて、ここで私はJSPOploadにJavaWebファイルのアップロードの機能を実現させます.
JSPページの内容は以下の通りです.
<form method="POST" action="JspsmartUploadServlet" ENCTYPE="multipart/form-data">
		<table>
			<tr><td><input type="text" name="subject" /></td></tr>
			<tr><td><input type="file" name="file1"/></td></tr>
			<tr><td><input type="file" name="file2"/></td></tr>
			<tr><td><input type="file" name="file3"/></td></tr>
			<tr><td><input type="submit" value="  "/></td></tr>
		</table>  		
  	</form>

 
対応するサーブレットの内容は次のとおりです.
/**
 * JspSmartUpload       
 * 
 * @author [email protected]
 * 
 */
public class JspsmartUploadServlet extends HttpServlet {

	private static final long serialVersionUID = 1330160775645241539L;

	public void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		SmartUpload smartUpload = new SmartUpload();
		// SmartUpload     
		smartUpload.initialize(this.getServletConfig(), request, response);
		//                
		smartUpload.setMaxFileSize(10 * 1024);
		//              ,               
		smartUpload.setTotalMaxFileSize(3 * 10 * 1024);
		//                   。          ,           。
		smartUpload.setAllowedFilesList("doc,txt,xls,pdf");
		//          (       )
		try {
			smartUpload.setDeniedFilesList("exe,bat,jsp");
		} catch (SQLException e1) {
			e1.printStackTrace();
		}
		try {
			//       。      ,     initialize  ,           
			smartUpload.upload();
		} catch (SmartUploadException e2) {
			e2.printStackTrace();
		}
		//       
		String dirPath = request.getSession().getServletContext().getRealPath(
				"/FileDir");
		java.io.File f = new java.io.File(dirPath);
		if (!f.exists()) {
			f.mkdirs();
		}

		//             
		saveAll(smartUpload, dirPath);
		//                  
		saveSingle(smartUpload, dirPath);

		//           
		com.jspsmart.upload.Request rq = smartUpload.getRequest();
		//         。       ,    null
		String parameterValue = rq.getParameter("subject");
		System.out.println(parameterValue);
		//   Request          ,        。             
		Enumeration parameterName = rq.getParameterNames();
		while (parameterName.hasMoreElements()) {
			System.out.println(parameterName.nextElement());
		}
		//             ,        。            。       ,    null
		rq.getParameterValues("subject");
	}

	/**
	 *             
	 * 
	 * @param smartUpload
	 * @param dirPath
	 * @throws ServletException
	 * @throws IOException
	 */
	private void saveAll(SmartUpload smartUpload, String dirPath)
			throws ServletException, IOException {
		try {
			//                ,          
			smartUpload.save(dirPath);
		} catch (SmartUploadException e) {
			e.printStackTrace();
		}
	}

	/**
	 *                  
	 * 
	 * @param smartUpload
	 * @throws ServletException
	 * @throws IOException
	 * @throws
	 */
	private void saveSingle(SmartUpload smartUpload, String dirPath)
			throws ServletException, IOException {
		com.jspsmart.upload.Files files = smartUpload.getFiles();
		File regionDirSmall = new File(dirPath, "dirSmall");
		if (!regionDirSmall.exists()) {
			regionDirSmall.mkdirs();
		}
		File regionDirBig = new File(dirPath, "dirBig");
		if (!regionDirBig.exists()) {
			regionDirBig.mkdirs();
		}
		//          ,       
		for (int i = 0; i < files.getCount(); i++) {
			com.jspsmart.upload.File f = files.getFile(i);
			if (f.isMissing()) {
				continue;
			}
			//     
			try {
				if (f.getSize() < 1024) {
					f.saveAs(regionDirSmall.getPath() + "\\" + f.getFileName(),
							f.SAVEAS_PHYSICAL);
				} else {

					f.saveAs(regionDirBig.getPath() + "\\" + f.getFileName(),
							f.SAVEAS_PHYSICAL);
				}
			} catch (SmartUploadException e) {
				e.printStackTrace();
			}
		}
	}

	public void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		this.doPost(request, response);
	}

}

  JSPOploadファイルとは異なり、次のようにダウンロードされます.
JSPページ(サーブレットにアクセスしてファイルを取得できますが、ここでは省略します)
<a href="JspsmartDownload">  </a>

 サーブレットの内容は次のとおりです.
/**
 *   Jspsmart    
 * 
 * @author [email protected]
 * 
 */
public class JspsmartDownload extends HttpServlet {

	public void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		SmartUpload smartUpload = new SmartUpload();
		smartUpload.initialize(this.getServletConfig(), request, response);
		smartUpload.setContentDisposition(null);
		File downloadFile = new File(this.getServletContext().getRealPath("/")
				+ "\\FileDir\\dirSmall" + "\\Oracle  .txt");
		try {
			System.out.println(downloadFile.getAbsolutePath());
			smartUpload.downloadFile(downloadFile.getAbsolutePath());
		} catch (SmartUploadException e) {
			e.printStackTrace();
		}
	}

	public void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		this.doPost(request, response);
	}
}

 
JSPOploadのその他の紹介については、chengzhishheng(http://chengzhisheng.iteye.com/)の以下の内容に感謝します.
http://chengzhisheng.iteye.com/blog/127581
 、       

㈠ File  

                   。   ,            、    、   、       。 

  File         : 

1、saveAs  :       。 

  : 

public void saveAs(java.lang.String destFilePathName) 

  

public void saveAs(java.lang.String destFilePathName, int optionSaveAs) 

  ,destFilePathName       ,optionSaveAs      ,       ,   SAVEAS_PHYSICAL,SAVEAS_VIRTUAL,SAVEAS_AUTO。SAVEAS_PHYSICAL                     ,SAVEAS_VIRTUAL   Web                  ,SAVEAS_AUTO        , Web                  ,    SAVEAS_VIRTUAL,     SAVEAS_PHYSICAL。 

  ,saveAs("/upload/sample.zip",SAVEAS_PHYSICAL)    Web      C ,          c:\upload\sample.zip。 saveAs("/upload/sample.zip",SAVEAS_VIRTUAL)    Web         webapps/jspsmartupload,          webapps/jspsmartupload/upload/sample.zip。saveAs("/upload/sample.zip",SAVEAS_AUTO)    Web          upload  ,     saveAs("/upload/sample.zip",SAVEAS_VIRTUAL),   saveAs("/upload/sample.zip",SAVEAS_PHYSICAL)。 

  :  Web       ,    SAVEAS_VIRTUAL,    。 

2、isMissing 

  :                 ,            。      ,   false。     ,   true。 

  :public boolean isMissing() 

3、getFieldName 

  : HTML                  。 

  :public String getFieldName() 

4、getFileName 

  :    (      ) 

  :public String getFileName() 

5、getFilePathName 

  :     (   ) 

  :public String getFilePathName 

6、getFileExt 

  :      (  ) 

  :public String getFileExt() 

7、getSize 

  :     (    ) 

  :public int getSize() 

8、getBinaryData 

  :                ,         。 

  :public byte getBinaryData(int index)。  ,index    ,   0 getSize()-1  。 

㈡ Files  

                ,              、     。     : 

1、getCount 

  :         。 

  :public int getCount() 

2、getFile 

  :            File(  com.jspsmart.upload.File,  java.io.File,    )。 

  :public File getFile(int index)。  ,index     ,   0 getCount()-1  。 

3、getSize 

  :          ,                。 

  :public long getSize() 

4、getCollection 

  :          Collection     ,          ,        。 

  :public Collection getCollection() 

5、getEnumeration 

  :          Enumeration(  )     ,                。 

  :public Enumeration getEnumeration() 

㈢ Request  

           JSP     request。        ,           ,  request           ,    jspSmartUpload     Request     。        : 

1、getParameter 

  :        。       ,    null。 

  :public String getParameter(String name)。  ,name      。 

2、getParameterValues 

  :            ,        。            。       ,    null。 

  :public String[] getParameterValues(String name)。  ,name      。 

3、getParameterNames 

  :  Request          ,        。             。 

  :public Enumeration getParameterNames() 

㈣ SmartUpload            。 

A.          : 

    :initialize。 

  :            ,       。 

  :   ,        : 

public final void initialize(javax.servlet.jsp.PageContext pageContext) 

  ,pageContext JSP      (     )。 

B.         : 

1、upload 

  :      。      ,     initialize  ,           。 

  :public void upload() 

2、save 

  :               ,          。 

  :public int save(String destPathName) 

 public int save(String destPathName,int option) 

  ,destPathName       ,option     ,     ,   SAVE_PHYSICAL,SAVE_VIRTUAL SAVE_AUTO。( File  saveAs         )SAVE_PHYSICAL                            ,SAVE_VIRTUAL           Web                 , SAVE_AUTO          。 

 :save(destPathName)     save(destPathName,SAVE_AUTO)。 

3、getSize 

  :            

  :public int getSize() 

4、getFiles 

  :       , Files      ,    Files                   。 

  :public Files getFiles() 

5、getRequest 

  :  Request  ,                。 

  :public Request getRequest() 

6、setAllowedFilesList 

  :                ,              ,       。 

  :public void setAllowedFilesList(String allowedFilesList) 

  ,allowedFilesList             ,            。                 ,         。  :setAllowedFilesList("doc,txt,,")      doc txt                。 

7、setDeniedFilesList 

  :                  。          ,           。 

  :public void setDeniedFilesList(String deniedFilesList) 

  ,deniedFilesList             ,            。                 ,          。  :setDeniedFilesList("exe,bat,,")      exe bat                。 

8、setMaxFileSize 

  :               。 

  :public void setMaxFileSize(long maxFileSize) 

  ,maxFileSize               ,         ,     。 

9、setTotalMaxFileSize 

  :             ,               。 

  :public void setTotalMaxFileSize(long totalMaxFileSize) 

  ,totalMaxFileSize            。 

C.          

1、setContentDisposition 

  :      MIME    CONTENT-DISPOSITION 。jspSmartUpload                MIME    CONTENT-DISPOSITION ,            ,     。 

  :public void setContentDisposition(String contentDisposition) 

  ,contentDisposition       。  contentDisposition null,        "attachment;",             ,   IE           ,           (IE                       ,    doc   word    ,    pdf   acrobat    ,  )。 

2、downloadFile 

  :    。 

  :          ,      ,               (       ,        )。 

① public void downloadFile(String sourceFilePathName) 

  ,sourceFilePathName        (        ) 

② public void downloadFile(String sourceFilePathName,String contentType) 

  ,sourceFilePathName        (        ),contentType     (MIME         ,       )。 

③ public void downloadFile(String sourceFilePathName,String contentType,String destFileName) 

  ,sourceFilePathName        (        ),contentType     (MIME         ,       ),destFileName            。