需要的包是:
java服务接收端:
方法(一)
//上传图片到服务器,并且获得url @RequestMapping("GetPortraitUrl") public @ResponseBody GetPortraitUrlResponse GetPortraitUrl(HttpServletRequest request) throws Exception{ String uploadPath = "f:\\temp"; // 上传文件的目录 String tempPath = "f:\\temp\\buffer\\"; //临时文件目录 File uploadFile = new File(uploadPath); if (!uploadFile.exists()) { uploadFile.mkdirs(); } File tempPathFile= new File(tempPath); if (!tempPathFile.exists()) { tempPathFile.mkdirs(); } System.out.println(request.getContentType()); GetPortraitUrlResponse rResponse=new GetPortraitUrlResponse(); DiskFileItemFactory factory = new DiskFileItemFactory(); ServletFileUpload upload = new ServletFileUpload(factory); factory.setSizeThreshold(4096); // 设置缓冲区大小,这里是4kb factory.setRepository(tempPathFile);// 设置缓冲区目录 upload.setSizeMax(4194304); // 设置最大文件尺寸,这里是4MB try { List<FileItem> items = upload.parseRequest(request); Iterator<FileItem> i = items.iterator(); while (i.hasNext()) { FileItem fi = (FileItem) i.next(); String fileName = fi.getName(); if (fileName != null) { File fullFile = new File(fi.getName()); File savedFile = new File(uploadPath, fullFile.getName()); fi.write(savedFile); } } } catch (org.apache.commons.fileupload.FileUploadException e) { // TODO Auto-generated catch block e.printStackTrace(); }// 得到所有的文件 return rResponse; }方法(二)
//图片上传 @RequestMapping("GetPortraitUrl") public void receiveData(HttpServletRequest request, HttpServletResponse response){ PrintWriter out = null; response.setContentType("text/html;charset=UTF-8"); Map map = new HashMap(); FileItemFactory factory = new DiskFileItemFactory(); ServletFileUpload upload = new ServletFileUpload(factory); File directory = null; List<FileItem> items = new ArrayList(); try { items = upload.parseRequest(request); // 得到所有的文件 Iterator<FileItem> it = items.iterator(); while (it.hasNext()) { FileItem fItem = (FileItem) it.next(); String fName = ""; Object fValue = null; if (fItem.isFormField()) { // 普通文本框的值 fName = fItem.getFieldName(); // fValue = fItem.getString(); fValue = fItem.getString("UTF-8"); map.put(fName, fValue); } else { // 获取上传文件的值 fName = fItem.getFieldName(); fValue = fItem.getInputStream(); map.put(fName, fValue); String name = fItem.getName(); if(name != null && !("".equals(name))) { name = name.substring(name.lastIndexOf(File.separator) + 1); // String stamp = StringUtils.getFormattedCurrDateNumberString(); directory = new File("f://test"); directory.mkdirs(); String filePath = ("f://test")+ File.separator + name; map.put(fName + "FilePath", filePath); InputStream is = fItem.getInputStream(); FileOutputStream fos = new FileOutputStream(filePath); byte[] buffer = new byte[1024]; while (is.read(buffer) > 0) { fos.write(buffer, 0, buffer.length); } fos.flush(); fos.close(); map.put(fName + "FileName", name); } } } } catch (Exception e) { System.out.println("读取http请求属性值出错!"); // e.printStackTrace(); } // 数据处理 try { out = response.getWriter(); out.print("{success:true, msg:'接收成功'}"); out.close(); } catch (IOException e) { e.printStackTrace(); } }
update.jsp文件:
<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8" isELIgnored="false"%> <% String appContext= request.getContextPath();// 获得当前应用的根路径 String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort() + appContext+"/" ; %> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <base href="<%=basePath%>"> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>上传目录</title> </head> <body> <form method="POST" enctype="multipart/form-data" action="GetPortraitUrl" name="uploadForm"> 选择一个文件: <input type="file" name="upfile"><br/> <br/> <input type="submit" value="上传"> </form> </body> </html>