<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
/c:set
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
555-555
非阻塞异步处理。敬请高人指点,不胜感激。
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
2条回答 默认 最新
- kpppkk 2015-11-26 15:45关注
package com.servlet;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.PrintWriter;
import java.lang.reflect.Method;
import java.util.Arrays;
import java.util.List;
import java.util.Random;import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.ProgressListener;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;import sun.management.counter.Variability;
import com.dao.PicDAO;
import com.entity.Picture;
import com.entity.User;
import com.listner.UploadProgress;
import com.listner.UserProperties;public class UploadServlet extends HttpServlet {
private static final long serialVersionUID = 1L;public UploadServlet() { super(); } protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { this.doPost(request, response); } private PicDAO picDAO = new PicDAO(); protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html"); response.setCharacterEncoding("UTF-8"); String methodName = request.getParameter("method"); try { Method method = getClass().getDeclaredMethod(methodName, HttpServletRequest.class,HttpServletResponse.class); method.setAccessible(true); method.invoke(this,request,response); } catch (Exception e) { e.printStackTrace(); throw new RuntimeException(e); } } protected void uploadAjax3(HttpServletRequest request, HttpServletResponse response) throws Exception{ response.setContentType("text/xml;charset=UTF-8"); DiskFileItemFactory factory = new DiskFileItemFactory(); ServletFileUpload upload = new ServletFileUpload(factory); upload.setHeaderEncoding("UTF-8"); List<FileItem> items = upload.parseRequest(request); String fileMaxSize = UserProperties.getInstance().getProperty("fileMaxSize"); String totleFileMaxSize = UserProperties.getInstance().getProperty("totalFileMaxSize"); upload.setSizeMax(Integer.parseInt(totleFileMaxSize)); upload.setFileSizeMax(Integer.parseInt(fileMaxSize));
// HttpSession session = request.getSession();
// User user = (User) session.getAttribute("user");
long id3 = 10;// long id3 = Long.parseLong(request.getParameter("id3"));
// response.setHeader("Cache-Control","no-cache");
// PrintWriter pw = response.getWriter();
String name = request.getParameter("name");
System.out.println(name);
for (FileItem item : items) {
if (item.isFormField()) {
String value = item.getString();
}else{
String pathP = UserProperties.getInstance().getProperty("url");
File file = new File(pathP + "/" + "pic_" + id3);
if (!file.exists()) {
file.mkdirs();
}else{
String picName = item.getName();
picName = picName.substring(picName.lastIndexOf("/") + 1);
String exts = picName.substring(picName.lastIndexOf("."));
String exts2 = picName.substring(picName.lastIndexOf(".") + 1);
String extsName = UserProperties.getInstance().getProperty("extsName");
List extsN = Arrays.asList(extsName.split(","));InputStream in = null; FileOutputStream fos = null; try {/* if (!extsN.contains(exts2)) { pw.print("a1"); pw.flush(); return; }else{ if (item.getSize() == 0 || item.getSize() > upload.getFileSizeMax()) { pw.print("a2"); pw.flush(); return; }else{*/ // pw.print("a3"); // totalSize = request.getContentLength(); Random random = new Random(); int randomNuber = random.nextInt(1000); String tmpPath = pathP + "/" + "pic_" + id3 + "/" + System.currentTimeMillis() + randomNuber + exts; b = item.getSize(); String s = b + name; System.out.println(s + "ff"); in = item.getInputStream(); fos = new FileOutputStream(new File(tmpPath)); byte[] buffer = new byte[1024]; int n; a = 0L; while ((n = in.read(buffer)) != -1) { fos.write(buffer, 0, n); a += (long) n; } fos.flush(); fos.close(); in.close(); item.delete(); // 内存中删除该数据流 Picture picture = new Picture(); picture.setPicName(picName); picture.setPicUrl(tmpPath); picture.setUserId(id3); picDAO.sava(picture); // pw.flush(); // } // } } catch (Exception e) { e.printStackTrace(); } } } } } protected void status(HttpServletRequest request,HttpServletResponse response) throws IOException { response.setContentType("text/xml"); response.setHeader("Cache-Control","no-cache"); System.out.println("来自servletrrrrrrrrrrrrrrr"); try { if (a == 0 && b == 0) { int percent = 0; response.getWriter().print(percent); response.getWriter().flush(); }else if (b > 0 && b > a) { int percent = (int) (a * 100 /b); response.getWriter().print(percent); response.getWriter().flush(); }else if (b > 0 && a > 0 && b== a) { int percent = 100; response.getWriter().print(percent); response.getWriter().flush(); b = 0L;a = 0L; } } catch (Exception e) { e.printStackTrace(); } } private long a = 0L; private long b = 0L;
}
解决 无用评论 打赏 举报
悬赏问题
- ¥15 微信会员卡等级和折扣规则
- ¥15 微信公众平台自制会员卡可以通过收款码收款码收款进行自动积分吗
- ¥15 随身WiFi网络灯亮但是没有网络,如何解决?
- ¥15 gdf格式的脑电数据如何处理matlab
- ¥20 重新写的代码替换了之后运行hbuliderx就这样了
- ¥100 监控抖音用户作品更新可以微信公众号提醒
- ¥15 UE5 如何可以不渲染HDRIBackdrop背景
- ¥70 2048小游戏毕设项目
- ¥20 mysql架构,按照姓名分表
- ¥15 MATLAB实现区间[a,b]上的Gauss-Legendre积分