温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

使用SpringMVC怎么实现跨服务器上传文件

发布时间:2021-06-17 13:53:24 来源:亿速云 阅读:131 作者:Leah 栏目:编程语言

这篇文章给大家介绍使用SpringMVC怎么实现跨服务器上传文件,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。

一、上传服务器:

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静等着上传服务器那边的请求

关于使用SpringMVC怎么实现跨服务器上传文件就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI