结合flash,可以方便的实现多文件上传。而且可以一次性选择多个文件。
这个例子使用了三个三方库:
下面开始贴代码。
首先是供上传用的form
SWFUpload Demos - Simple Demo
Simple Demo
This page demonstrates a simple usage of SWFUpload. It uses the Queue Plugin to simplify uploading or cancelling all queued files.
Upload Queue
0 Files Uploaded
然后接收方jsp
pageEncoding="utf-8"%>
if (ServletFileUpload.isMultipartContent(request)) {
// ファクトリー生成
DiskFileItemFactory factory = new DiskFileItemFactory();
factory.setSizeThreshold(1426);
factory.setRepository(new File("C:/WINDOWS/Temp/file_up")); //一時的に保存する際のディレクトリ
ServletFileUpload upload = new ServletFileUpload(factory);
upload.setSizeMax(2000 * 1024);
upload.setFileSizeMax(1000 * 1024);
List
items;
try {
items = upload.parseRequest(request);
} catch (FileUploadException e) {
// エラー処理
throw new ServletException(e);
}
// 全フィールドに対するループ
for (Object val : items) {
FileItem item = (FileItem) val;
if (item.isFormField()) {
// type="file"以外のフィールド
out.println(item.getFieldName());
} else {
// type="file"のフィールド
File f = new File(item.getName());
try {
item.write(new File("C:/WINDOWS/Temp", f.getName()));
out.println(f.getName());
} catch (IOException e) {
throw e;
} catch (Exception e) {
throw new ServletException(e);
}
}
}
}
%>