Java Webアップロードコンポーネント使用:JSPOpload
JSPOploadについての紹介はgoogleに行って、jarと使用例は以下の添付ファイルでダウンロードすることができて、ここで私はJSPOploadにJavaWebファイルのアップロードの機能を実現させます.
JSPページの内容は以下の通りです.
対応するサーブレットの内容は次のとおりです.
JSPOploadファイルとは異なり、次のようにダウンロードされます.
JSPページ(サーブレットにアクセスしてファイルを取得できますが、ここでは省略します)
サーブレットの内容は次のとおりです.
JSPOploadのその他の紹介については、chengzhishheng(http://chengzhisheng.iteye.com/)の以下の内容に感謝します.
http://chengzhisheng.iteye.com/blog/127581
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 。