Struts2.0ファイルアップロードの原理
Struts 2ファイルアップロードデフォルトでapacheを使用したファイルアップロードのパッケージをアップロードします.新しい処理アップロードのサーブレットは以下の通りです.
WebRootの下に新しいフォルダを作成します:upload、プロジェクトがサーバーに公開されたとき、サーバーの中にuploadのフォルダがあります.
web.xmlのサーブレットは次のように構成されています.
新規JSPは以下の通りです.
WebRootの下に新しいフォルダを作成します:upload、プロジェクトがサーバーに公開されたとき、サーバーの中にuploadのフォルダがあります.
web.xmlのサーブレットは次のように構成されています.
<servlet>
<servlet-name>UploadServlet</servlet-name>
<servlet-class>com.mengya.servlet.UploadServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>UploadServlet</servlet-name>
<url-pattern>/UploadServlet</url-pattern>
</servlet-mapping>
新規JSPは以下の通りです.
<form action="UploadServlet" method="post" enctype="multipart/form-data">
username:<input type="text" name="username"><br>
password:<input type="password" name="password"><br>
file1:<input type="file" name="file1"><br>
file2:<input type="file" name="file2"><br>
<input type="submit" value=" ">
</form>
/**
*
* @author
*
* apache commons-io-1.3.2.jar,commons-fileupload-1.2.1.jar Servlet
*/
public class UploadServlet extends HttpServlet {
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
/**
* request.getRealPath("/") :C:\Program Files\Apache
* Software Foundation\Tomcat 6.0\webapps\Struts2_9\
* request.getRealPath("/upload") + upload
* :C:\Program Files\Apache Software Foundation\Tomcat
* 6.0\webapps\Struts2_9\Upload
*/
String path = request.getRealPath("/upload");
DiskFileItemFactory factory = new DiskFileItemFactory();
/**
* Apache , 。
*/
/**
* 。1024*1024 1M
*/
factory.setSizeThreshold(1024 * 1024);
/**
* , 。
*/
factory.setRepository(new File(path));
/**
* ServletFileUpload
*/
ServletFileUpload servletUpload = new ServletFileUpload(factory);
try {
List<FileItem> list = servletUpload.parseRequest(request);
for (FileItem item : list) {
/**
* file ,
*/
if (item.isFormField()) {
/**
* ,
*/
String name = item.getFieldName();
/**
* gbk value ,
*/
String value = item.getString("gbk");
request.setAttribute(name, value);
} else {
/**
* file
*/
/**
* file
*/
String name = item.getFieldName();
/**
* file ( )
* , , 。
* : :C:\Documents and
* Settings\Administrator\ \ .txt : .txt
*/
String value = item.getName();
/**
* ”\“ start -1
*/
int start = value.lastIndexOf("\\");
String fileName = value.substring(start + 1);
request.setAttribute(name, fileName);
/**
*
*/
InputStream is = item.getInputStream();
/**
* path
*/
File UploadFile = new File(path, fileName);
OutputStream os = new FileOutputStream(UploadFile);
byte[] buffer = new byte[400];
int length = 0;
while ((length = is.read(buffer)) > 0) {
os.write(buffer, 0, buffer.length);
}
os.close();
is.close();
/**
*
* InputStream OutputStream item.write(File)
* item.write(UploadFile);
*/
}
}
} catch (FileUploadException e) {
e.printStackTrace();
}
}
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
this.doPost(request, response);
}
}