一次选多个文件上传java_JSP多文件上传(一次性可选多个文件)

结合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);

}

}

}

}

%>

package com.etoak.servlet; import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import com.etoak.dao.UploaderDaoIf; import com.etoak.dao.UploaderDaoImpl; import com.etoak.po.Uploader; import com.etoak.util.UUIDGenerator; import com.jspsmart.upload.File; import com.jspsmart.upload.Files; import com.jspsmart.upload.Request; import com.jspsmart.upload.SmartUpload; public class Upload extends HttpServlet { public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html;charset=gbk"); request.setCharacterEncoding("gbk"); try { // 1:引入smartupload SmartUpload su = new SmartUpload(); // 2:设置允许上传文件的后缀名,用逗号隔开 su.setAllowedFilesList("jpg,gif,bmp,jpeg"); // 3:设置允许上传文件的大小 .这里是3m su.setMaxFileSize(3 * 1024 * 1024); // 4:初始化,接受页面传递过来的请求 su.initialize(getServletConfig(), request, response); // 5:上传 su.upload(); // 拿取Smartupload的request // 注意当我们使用了SmartUpload此jar包后 // 无法再次使用httpServletRequest这个对象来调用 // getParameter这个方法了 Request myreq = su.getRequest(); String name = myreq.getParameter("name"); String pass = myreq.getParameter("pass"); // 拿取所有上传文件的对象 Files files = su.getFiles(); // 拿取我们上传的唯一一个文件 // 0 表示索引值 File file = files.getFile(0); // 上传文件的名字 String fileName = file.getFileName(); // 上传文件的大小 int fileSize = file.getSize(); // 上传文件的后缀名 String fileExt = file.getFileExt(); // 在服务器端开辟一个路径,建立文件夹放置文件 java.io.File myfile = new java.io.File(this.getServletContext() .getRealPath("/image")); // 如果不存在此路径 if (!myfile.exists()) { // 建立此路径 myfile.mkdir(); } // 58495849584954895.jpg String fileTrueName = new UUIDGenerator().generate() + "." + fileExt; // 组合一个另存为路径 // /image/43894834830430.jpg String finalPath = "/image/" + fileTrueName; // 另存为 file.saveAs(finalPath); Uploader up = new Uploader(); up.setName(name); up.setPass(pass); up.setPicPath(finalPath); UploaderDaoIf dao = new UploaderDaoImpl(); boolean flag = dao.addUp(up); if (flag) { this.getServletContext().setAttribute("up", up); response.sendRedirect("/JspDay3_upload/show.jsp"); } } catch (Exception ex) { ex.printStackTrace(); } } }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值