package com.jiong.uploadify; import java.io.File; import java.io.IOException; import java.util.Iterator; import java.util.List; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.apache.commons.fileupload.FileItem; import org.apache.commons.fileupload.FileUploadException; import org.apache.commons.fileupload.disk.DiskFileItemFactory; import org.apache.commons.fileupload.servlet.ServletFileUpload; import com.jenmin.dao.UserDao; public class UploadServlet extends HttpServlet { /** * serialVersionUID */ private static final long serialVersionUID = -919197936280771293L; UserDao ud = UserDao.getInstance(); public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { this.doPost(request, response); } public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { request.setCharacterEncoding("UTF-8"); response.setContentType("text/html;charset=UTF-8"); String userid = request.getParameter("userid"); if (userid != null && !userid.equals("")) { String savePath = generateDir(); processUpload(request, response, savePath, Integer.parseInt(userid)); } } /* * 上传处理方法 */ @SuppressWarnings("unchecked") public void processUpload(HttpServletRequest request, HttpServletResponse response, String savePath, int userid) { DiskFileItemFactory factory = new DiskFileItemFactory(); // 缓存大小512KB factory.setSizeThreshold(524288); // 设置一旦文件大小超过getSizeThreshold()的值时数据存放在硬盘的目录 factory.setRepository(new File(savePath + "/temp")); // 初始化化上传控件 ServletFileUpload upload = new ServletFileUpload(factory); // 指定单个上传文件的最大尺寸,单位:字节 upload.setFileSizeMax(3145728); // 设置编码 upload.setHeaderEncoding("UTF-8"); List<FileItem> fileList = null; try { // 解析request请求 fileList = upload.parseRequest(request); } catch(FileUploadException e) { e.printStackTrace(); } Iterator<FileItem> it = fileList.iterator(); String name = ""; String filename = ""; while (it.hasNext()) { FileItem item = it.next(); // 过滤掉表单中非文件域 if (!item.isFormField()) { // 获得上传文件的文件名 name = item.getName(); if (name != null && !name.trim().equals("")) { // 生成文件名 filename = generateFileName(name); File file = new File(savePath + "/" + filename); try { item.write(file); // 生成图片保存路径 String imgstr = this.getServletContext().getContextPath(); imgstr = imgstr + "/upload/" + filename; // 更新数据库保存图片url ud.updateImgBySql(imgstr, userid); response.getWriter().write("http://localhost:8080" + imgstr); } catch(Exception e) { e.printStackTrace(); } } } } } /* * 初妾化文件存储路徿 */ private String generateDir() { String pathString = getServletConfig().getServletContext().getRealPath("/upload"); String tempString = getServletConfig().getServletContext().getRealPath("/upload/temp"); File dirPath = new File(pathString); File dirTemp = new File(tempString); if (!dirPath.exists()) { dirPath.mkdirs(); } if (!dirTemp.exists()) { dirTemp.mkdirs(); } return pathString; } /* * 生成文件名 */ private String generateFileName(String name) { long currentTime = System.currentTimeMillis(); int i = (int) (Math.random() * 1000D + 1.0D); long result = currentTime + i; String filename = String.valueOf(result) + getFileExt(name); return filename; } /* * 获取文件格式 */ private String getFileExt(String name) { int pos = name.lastIndexOf("."); if (pos > 0) { return name.substring(pos); } else { return name; } } }
最近下载更多
小开子 LV1
2021年6月4日
1368448963 LV1
2020年11月5日
qqqqddd LV1
2020年10月26日
miaoss2 LV1
2020年7月31日
jdczuidaima LV16
2020年6月28日
tsy666666 LV8
2020年2月16日
wxd1997 LV13
2020年1月9日
zywzywzyw1 LV17
2019年9月28日
jaonsang LV25
2019年6月14日
2399431755 LV12
2019年4月3日
最近浏览更多
刘亦菲9527 LV15
2022年8月1日
我不划水
2022年4月24日
暂无贡献等级
abai250 LV1
2022年3月29日
zhuohanyuan LV10
2022年1月7日
tangjj7260 LV18
2021年11月12日
czr2233 LV9
2021年9月14日
1964867825
2021年9月6日
暂无贡献等级
天天 LV9
2021年9月4日
小开子 LV1
2021年6月4日
最代码-宋家辉 LV61
2021年5月16日