public class FileUploadServlet extends HttpServlet { private static final long serialVersionUID = 1L; private static Logger logger = LoggerFactory.getLogger(FileUploadServlet. class ); public FileUploadServlet() { super (); } protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { JsonMessage<Object> message = new JsonMessage<Object>(); EOSResponse eosResponse = null ; String sessionToken = null ; FileItem file = null ; InputStream in = null ; ByteArrayOutputStream swapStream1 = null ; try { request.setCharacterEncoding( "UTF-8" ); //1、创建一个DiskFileItemFactory工厂 DiskFileItemFactory factory = new DiskFileItemFactory(); //2、创建一个文件上传解析器 ServletFileUpload upload = new ServletFileUpload(factory); //解决上传文件名的中文乱码 upload.setHeaderEncoding( "UTF-8" ); // 1. 得到 FileItem 的集合 items List<FileItem> items = upload.parseRequest(request); logger.info( "items:{}" , items.size()); // 2. 遍历 items: for (FileItem item : items) { String name = item.getFieldName(); logger.info( "fieldName:{}" , name); // 若是一个一般的表单域, 打印信息 if (item.isFormField()) { String value = item.getString( "utf-8" ); if ( "session_token" .equals(name)){ sessionToken = value; } } else { if ( "file" .equals(name)){ file = item; } } } //session校验 if (StringUtils.isEmpty(sessionToken)){ message.setStatus(StatusCodeConstant.SESSION_TOKEN_TIME_OUT); message.setErrorMsg(StatusCodeConstant.SESSION_TOKEN_TIME_OUT_MSG); } String userId = RedisUtils.hget(sessionToken, "userId" ); logger.info( "userId:{}" , userId); if (StringUtils.isEmpty(userId)){ message.setStatus(StatusCodeConstant.SESSION_TOKEN_TIME_OUT); message.setErrorMsg(StatusCodeConstant.SESSION_TOKEN_TIME_OUT_MSG); } //上传文件 if (file == null ){ } else { swapStream1 = new ByteArrayOutputStream(); in = file.getInputStream(); byte [] buff = new byte [ 1024 ]; int rc = 0 ; while ((rc = in.read(buff)) > 0 ) { swapStream1.write(buff, 0 , rc); } Usr usr = new Usr(); usr.setObjectId(Integer.parseInt(userId)); final byte [] bytes = swapStream1.toByteArray(); eosResponse= ServerProxy.getSharedInstance().saveHeadPortrait(usr, new RequestOperation() { @Override public void addValueToRequest(EOSRequest request) { request.addMedia( "head_icon_media" , new EOSMediaData(EOSMediaData.MEDIA_TYPE_IMAGE_JPEG, bytes)); } }); // 请求成功的场合 if (eosResponse.getCode() == 0 ) { message.setStatus(ConstantUnit.SUCCESS); } else { message.setStatus(String.valueOf(eosResponse.getCode())); } } } catch (Exception e) { e.printStackTrace(); } finally { try { if (swapStream1 != null ){ swapStream1.close(); } } catch (IOException e) { e.printStackTrace(); } try { if (in != null ){ in.close(); } } catch (IOException e) { e.printStackTrace(); } } PrintWriter out = response.getWriter(); out.write(JSONObject.toJSONString(message)); } protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doGet(request, response); } } |