.导入jar包

  1. commons-fileupload.jar
  2. commons-io-1.3.2.jar

跨服务器使用的jar

  1. jersey-client-1.18.1.jar
  2. jersey-core-1.18.1.jar

需要使用的js

文件上传页面addUser.jsp

  1. <%@ page language="java" contentType="text/html; charset=UTF-8"
  2. pageEncoding="UTF-8"%>
  3. <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
  4. <html>
  5. <head>
  6. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  7. <title>Insert title here</title>
  8. <script type="text/javascript" src="${pageContext.request.contextPath}/js/jquery-1.8.3.js"></script> <!-- jQuery -->
  9. <script type="text/javascript" src="${pageContext.request.contextPath}/js/jquery.form.js"></script> <!-- 文件上传的js文件 -->
  10. </head>
  11. <body>
  12. <form id="fm" action="${pageContext.request.contextPath}/user/addUser.do" method="post" >
  13. <p>用户名:<input name="userCode"/></p>
  14. <p>姓名:<input name="userName"/></p>
  15. <p>密码:<input name="userPassword" type="password"/></p>
  16. <p>性别:<input type="radio" name="gender" value="1" />
  17. <input type="radio" name="gender" value="2" checked/></p>
  18. <p>
  19. 请上传头像:
  20. <img id=\'imgSrc\' src=\'\' alt="" height="100" width="100"/>
  21. <input type="file" id=\'imgFile\' name=\'imgFile\' onchange="fileShow();"/>
  22. <input id="relativeSrc" type="hidden" name="filepath"/><!-- 绝对路径提交到数据库 -->
  23. <br/>
  24. </p>
  25. <p><input type="submit" value="添加"/></p>
  26. </form>
  27. <script type="text/javascript">
  28. function fileShow(){
  29. //请求ajax 将图片上传到文件服务器
  30. $("#fm").ajaxSubmit({
  31. type:"POST",
  32. url:"${pageContext.request.contextPath}/upload/uploadImage.do", //提交至controller处理,将图片保存并实时显示
  33. data:{
  34. fileName:"imgFile"
  35. },
  36. success:function(resData){
  37. $("#imgSrc").attr("src",resData.fullPath);
  38. $("#relativeSrc").val(resData.relativePath);
  39. },
  40. dataType:"json"
  41. });
  42. }
  43. </script>
  44. </body>
  45. </html>

cn.bdqn.controller.UploadController.java

  1. package cn.bdqn.controller;
  2. /**
  3. * ajax文件上传并实时显示
  4. */
  5. import java.text.SimpleDateFormat;
  6. import java.util.Date;
  7. import java.util.HashMap;
  8. import java.util.Map;
  9. import java.util.Random;
  10. import javax.servlet.http.HttpServletRequest;
  11. import org.springframework.stereotype.Controller;
  12. import org.springframework.web.bind.annotation.RequestMapping;
  13. import org.springframework.web.bind.annotation.ResponseBody;
  14. import org.springframework.web.multipart.MultipartHttpServletRequest;
  15. import org.springframework.web.multipart.commons.CommonsMultipartFile;
  16. import com.sun.jersey.api.client.Client;
  17. import com.sun.jersey.api.client.WebResource;
  18. @Controller
  19. @RequestMapping("/upload")
  20. public class UploadController {
  21. @RequestMapping("uploadImage")
  22. //@responseBody把后台pojo转换json对象,返回到页面
  23. public @ResponseBody Map<String,String> uploadImage(HttpServletRequest request,String fileName){
  24. MultipartHttpServletRequest mr = (MultipartHttpServletRequest) request; //将普通请求转换为多部件请求方式
  25. CommonsMultipartFile mf = (CommonsMultipartFile) mr.getFile(fileName); //根据文件名进行获取文件对象
  26. byte[] fileBytes = mf.getBytes(); //将文件对象转换为字节
  27. /**
  28. * 获取文件名
  29. */
  30. String newFileName = "";
  31. SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmssSSS"); //获取当前时间作为文件名的前半部分
  32. newFileName = sdf.format(new Date());
  33. //取三位数的随机数 作为文件名的后半部分
  34. Random rd = new Random();
  35. for(int i=0;i<3;i++){
  36. newFileName = newFileName + rd.nextInt(10);
  37. }
  38. System.out.println("随机的文件名为:"+newFileName);
  39. //获取文件全名称
  40. String originalFilename = mf.getOriginalFilename();
  41. System.out.println("文件全名称:"+originalFilename);
  42. //获取后缀
  43. String suffix = originalFilename.substring(originalFilename.lastIndexOf("."));
  44. System.out.println("上传文件的后缀:"+suffix);
  45. /**
  46. * 开始上传
  47. */
  48. Client client = Client.create(); //创建jesy服务器,进行跨服务器上传
  49. //绝对路径
  50. String fullPath = "http://127.0.0.1:8001/fileproj/upload/"+newFileName+suffix;
  51. WebResource wr = client.resource(fullPath);
  52. //相对路径
  53. String relativePath = "/upload/"+newFileName+suffix;
  54. //上传
  55. wr.put(String.class, fileBytes); //将文件对象的字节码上传
  56. Map<String,String> map = new HashMap<String, String>();
  57. map.put("fullPath", fullPath); //将绝对路径存入map集合
  58. map.put("relativePath", relativePath); //将相对路径存入map集合
  59. return map;
  60. }
  61. }

在文件服务器中创建一个文件夹存放本项目需要上传的图片。多项目之前可以使用不同文件夹存放。

将两个服务器打开

 

 

版权声明:本文为wxbblogs原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/wxbblogs/p/7306878.html