首页 > 编程 > Java > 正文

SpringMVC图片文件跨服务器上传

2019-11-26 08:40:53
字体:
来源:转载
供稿:网友

图片文件跨服务器上传(我使用的公司云桌面作为上传服务器,自己的笔记本作为存储服务器测试的)

一、上传服务器:

1、pom文件(使用jersey插件)

<!-- 上传组件包 -->    <dependency>      <groupId>commons-fileupload</groupId>      <artifactId>commons-fileupload</artifactId>      <version>1.3.1</version>    </dependency>    <dependency>      <groupId>commons-io</groupId>      <artifactId>commons-io</artifactId>      <version>2.4</version>    </dependency>    <dependency>      <groupId>commons-codec</groupId>      <artifactId>commons-codec</artifactId>      <version>1.9</version>   </dependency>  <!-- 夸服务器文件上传 --> <!-- https://mvnrepository.com/artifact/com.sun.jersey/jersey-client --> <dependency>   <groupId>com.sun.jersey</groupId>   <artifactId>jersey-client</artifactId>   <version>1.18.6</version> </dependency> <!-- https://mvnrepository.com/artifact/com.sun.jersey/jersey-core --> <dependency>   <groupId>com.sun.jersey</groupId>   <artifactId>jersey-core</artifactId>   <version>1.18.6</version> </dependency> <!-- https://mvnrepository.com/artifact/org.glassfish.jersey.core/jersey-common --> <dependency>   <groupId>org.glassfish.jersey.core</groupId>   <artifactId>jersey-common</artifactId>   <version>2.26</version> </dependency>

2、前端页面:

<form action="${pageContext.request.contextPath}/Abc/uploadImg.do" enctype="multipart/form-data" method="post"> 多个文件: <input type="file" name="fileList" multiple/> <input type="submit" value="提交" /></form>

3、后台controller:

/** * 多文件,跨服务器上传 * @param request * @return */ @ResponseBody @RequestMapping("/uploadImg") public String fileUpload(MultipartHttpServletRequest request){ JSONObject joson = new JSONObject(); String serverAddress = "http://172.xxx.xxx.xxx:8080";//服务器地址 String folder = "/upload/";//文件夹名称 String fullPaths = "";//绝对路径 String reletivePaths = "";//相对路径 // 创建jesy服务器 Client client = Client.create(); // 获取文件名字 Iterator<String> fileNames = request.getFileNames(); List<String> fileNameList = new ArrayList<String>();    List<String> relaPathList = new ArrayList<String>();    List<String> realPathList = new ArrayList<String>(); try {  while (fileNames.hasNext()) {//判断多文件  // 把fileNames集合中的值打出来  String fileName = fileNames.next();  // request.getFiles(fileName)方法即通过fileName这个Key, 得到对应的文件集合列表.  // 只是在这个Map中, 文件被包装成MultipartFile类型  List<MultipartFile> fileList = request.getFiles(fileName);  if (fileList.size() > 0) {   // 遍历文件列表   Iterator<MultipartFile> fileIte = fileList.iterator();   while (fileIte.hasNext()) {   // 获得每一个文件   MultipartFile multipartFile = fileIte.next();   // 截取文件的后缀名(.jpg)   String originalFilename = multipartFile.getOriginalFilename();//原始文件名   String subString = originalFilename.substring(originalFilename.indexOf("."));//文件名后缀   //System.out.println("原始文件名:"+originalFilename+";文件后缀名:"+subString);   // 将文件对象转换为字节   byte[] fileBytes = multipartFile.getBytes();   // 生成唯一的一个字符串名称(带后缀)   String newFilename = UUID.randomUUID().toString()+subString;   //System.out.println("唯一文件名(带后缀):"+newFilename);   // 开始上传文件   // 拼接保存的路径(相对路径)   reletivePaths = folder+newFilename;   // 拼接最终保存的路径(绝对对路径)   fullPaths = serverAddress+reletivePaths;   //把文件关联到远程服务器   WebResource webResource = client.resource(fullPaths);   // 上传   webResource.put(String.class, fileBytes);   fileNameList.add(newFilename);//文件名           relaPathList.add(reletivePaths);//相对路径           realPathList.add(fullPaths); //真实完整路径   }   joson.put("success", 1);   joson.put("error", "");   joson.put("fileNameList", fileNameList);   joson.put("relaPathList", relaPathList);   joson.put("realPathList", realPathList);  } else {   joson.put("success", 0);   joson.put("error", "上传失败");  }  } } catch (UniformInterfaceException e) {  // TODO Auto-generated catch block  e.printStackTrace();  joson.put("success", 0);  joson.put("error", "上传失败"); } catch (ClientHandlerException e) {  // TODO Auto-generated catch block  e.printStackTrace();  joson.put("success", 0);  joson.put("error", "上传失败"); } catch (IOException e) {  // TODO Auto-generated catch block  e.printStackTrace();  joson.put("success", 0);  joson.put("error", "上传失败"); } return joson.toString(); }

二、存储图片文件服务器:

1、Tomcat的conf目录下的web.xml文件的大概100行添加如下几行(这要是不打开就会报错)

 <servlet>    <servlet-name>default</servlet-name>    <servlet-class>org.apache.catalina.servlets.DefaultServlet</servlet-class>    <init-param>      <param-name>debug</param-name>      <param-value>0</param-value>    </init-param> <!-- 上面是本来就有的 -->    <!-- 允许文件读写 --> <init-param>  <param-name>readonly</param-name>      <param-value>false</param-value> </init-param>    <!-- 下面也是本来有的 -->    <init-param>      <param-name>listings</param-name>      <param-value>false</param-value>    </init-param>    <load-on-startup>1</load-on-startup></servlet>

2、在该Tomcat的/webapps/ROOT目录下创建一个upload目录,用来存放上传的文件

3、启动Tomcat静等着上传服务器那边的请求

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持武林网。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表