第一次自己写附件上传,用到了smartupload这个组件,项目中需要上传一个头像,后来又添加了身份证上传,首先先贴上单独上传的图片
package com.jeecg.Uploader;
import java.io.File;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.jeecgframework.core.util.ApplicationContextUtil;
import org.jeecgframework.core.util.MyBeanUtils;
import org.jeecgframework.web.system.service.SystemService;
import com.jeecg.entity.volunteera.VolunteerAEntity;
import com.jeecg.signin.RandomCode;
import com.jspsmart.upload.SmartUpload;
/**
* @author lb 个人中心头像上传
*/
public class SmartUploadServlet extends HttpServlet {
/**
*
*/
private static final long serialVersionUID = 8539934755986798169L;
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
this.doPost(req, resp);
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
SystemService systemService = ApplicationContextUtil.getContext().getBean(SystemService.class);
// 设置上传文件保存路径
String filePath = req.getSession().getServletContext().getRealPath("/_tmp/");
String iid = RandomCode.getUUID();
String id = req.getParameter("id");
String zyztype = req.getParameter("zyztype");
String shanchangxm = req.getParameter("shanchangxm");
String freetime = req.getParameter("freetime");
String fwly = req.getParameter("fwlingyu");
String fwdx = req.getParameter("fwduixiang");
String ext = "", filename = "", sql = "";
VolunteerAEntity volunteera = new VolunteerAEntity();
File file = new File(filePath);
if (!file.exists()) {
file.mkdir();
}
// 实例化上传组件
SmartUpload su = new SmartUpload();
// 初始化SmartUpload
su.initialize(getServletConfig(), req, resp);
// 设置上传文件对象1M
su.setMaxFileSize(1024 * 1024);
// 设置所有文件大小1M
su.setTotalMaxFileSize(1024 * 1024);
// 设置允许上传文件类型
su.setAllowedFilesList("jpg,gif,png");
String result = "";
try {
// 设置禁止上传文件类型
su.setDeniedFilesList("rar,jsp,js");
// 上传文件
su.upload();
if (su.getFiles().getCount() > 0) {
ext = su.getFiles().getFile(0).getFileExt();// 获取文件后缀
filename = filePath + "/" + iid + "." + ext;// 完整文件名
// 保存文件
su.getFiles().getFile(0).saveAs(filename);
result = "更新成功!";
sql = "UPDATE volunteer_a SET a0048='" + iid + "." + ext + "' WHERE id='" + id + "'";
int a = systemService.updateBySqlString(sql);
}
// ext=su.getFiles().getFile(0).getFileExt();//获取文件后缀
// filename = filePath+iid+"."+ext;//完整文件名
// //保存文件
// su.getFiles().getFile(0).saveAs(filename);
// sql="UPDATE volunteer_a SET a0048='"+iid+"."+ext+"' WHERE
// id='"+id+"'";
// int a = systemService.updateBySqlString(sql);
String a0002 = new String(su.getRequest().getParameter("c0002").getBytes(),"utf-8");
volunteera.setId(id);
volunteera.setA0002(a0002);
} catch (Exception e) {
result = "上传失败!";
e.printStackTrace();
}
// req.setAttribute("smartResult", result);
// req.getRequestDispatcher("/webpage/yzvolunteer/volunteergeren/wode.jsp").forward(req, resp);
}
}
后来自己想到了su.getFiles().getFile(0).getFileExt()中的参数0,联想到如果上传多个的话,是不是这个参数可变。果然发现,如果上传多个的话,可以直接写一个循环,然后遍历取出附件中的单个文件,顺序的话目前还未发现有什么不同的地方,贴上多个上传的代码
for (int i = 0; i < smart.getFiles().getCount(); i++) {
SmartFile files = smart.getFiles().getFile(i);
//System.out.println(files.getFileName());
if (!files.isMissing()) {
SimpleDateFormat sdf = new SimpleDateFormat(
"yyyyMMddHHmmssSSS");
String name = sdf.format(new java.util.Date());
name = name + "." + files.getFileExt();// 得到文件的扩展名
String filename = this.getServletContext().getRealPath("/")
+ "images\\" + name;
smart.getFiles().getFile(0).saveAs(filename);
}
只需要把上传的地方改进就可以。
(保存自己每一天的点滴,见证自己的成长)