热门标签 | HotTags
当前位置:  开发笔记 > 前端 > 正文

SpringMVC图片文件跨服务器上传

这篇文章主要为大家详细介绍了SpringMVC图片文件跨服务器上传,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

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

一、上传服务器:

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


    
      commons-fileupload
      commons-fileupload
      1.3.1
    
    
      commons-io
      commons-io
      2.4
    
    
      commons-codec
      commons-codec
      1.9
   
 
 
 
 
   com.sun.jersey
   jersey-client
   1.18.6
 
 
 
   com.sun.jersey
   jersey-core
   1.18.6
 
 
 
   org.glassfish.jersey.core
   jersey-common
   2.26
 

2、前端页面:


 多个文件: 
 

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 fileNames = request.getFileNames();
 List fileNameList = new ArrayList();
    List relaPathList = new ArrayList();
    List realPathList = new ArrayList();
 try {
  while (fileNames.hasNext()) {//判断多文件
  // 把fileNames集合中的值打出来
  String fileName = fileNames.next();
  // request.getFiles(fileName)方法即通过fileName这个Key, 得到对应的文件集合列表.
  // 只是在这个Map中, 文件被包装成MultipartFile类型
  List fileList = request.getFiles(fileName);
  if (fileList.size() > 0) {
   // 遍历文件列表
   Iterator 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行添加如下几行(这要是不打开就会报错)

 
    default
    org.apache.catalina.servlets.DefaultServlet
    
      debug
      0
    
 
    
 
  readonly
      false
 
    
    
      listings
      false
    
    1

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

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

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


推荐阅读
  • 探讨如何真正掌握Java EE,包括所需技能、工具和实践经验。资深软件教学总监李刚分享了对毕业生简历中常见问题的看法,并提供了详尽的标准。 ... [详细]
  • 本文详细介绍了如何在Linux系统上安装和配置Smokeping,以实现对网络链路质量的实时监控。通过详细的步骤和必要的依赖包安装,确保用户能够顺利完成部署并优化其网络性能监控。 ... [详细]
  • 深入理解Cookie与Session会话管理
    本文详细介绍了如何通过HTTP响应和请求处理浏览器的Cookie信息,以及如何创建、设置和管理Cookie。同时探讨了会话跟踪技术中的Session机制,解释其原理及应用场景。 ... [详细]
  • 本文详细介绍了 Dockerfile 的编写方法及其在网络配置中的应用,涵盖基础指令、镜像构建与发布流程,并深入探讨了 Docker 的默认网络、容器互联及自定义网络的实现。 ... [详细]
  • 本文探讨了 RESTful API 和传统接口之间的关键差异,解释了为什么 RESTful API 在设计和实现上具有独特的优势。 ... [详细]
  • 在当前众多持久层框架中,MyBatis(前身为iBatis)凭借其轻量级、易用性和对SQL的直接支持,成为许多开发者的首选。本文将详细探讨MyBatis的核心概念、设计理念及其优势。 ... [详细]
  • 网络运维工程师负责确保企业IT基础设施的稳定运行,保障业务连续性和数据安全。他们需要具备多种技能,包括搭建和维护网络环境、监控系统性能、处理突发事件等。本文将探讨网络运维工程师的职业前景及其平均薪酬水平。 ... [详细]
  • 本文探讨了在通过 API 端点调用时,使用猫鼬(Mongoose)的 findOne 方法总是返回 null 的问题,并提供了详细的解决方案和建议。 ... [详细]
  • 本文详细介绍了如何准备和安装 Eclipse 开发环境及其相关插件,包括 JDK、Tomcat、Struts 等组件的安装步骤及配置方法。 ... [详细]
  • 本文探讨了在Windows Server 2008环境下配置Tomcat使用80端口时遇到的问题,包括端口被占用、多项目访问失败等,并提供详细的解决方法和配置建议。 ... [详细]
  • 本文详细介绍了在企业级项目中如何优化 Webpack 配置,特别是在 React 移动端项目中的最佳实践。涵盖资源压缩、代码分割、构建范围缩小、缓存机制以及性能优化等多个方面。 ... [详细]
  • 本文深入探讨了HTTP请求和响应对象的使用,详细介绍了如何通过响应对象向客户端发送数据、处理中文乱码问题以及常见的HTTP状态码。此外,还涵盖了文件下载、请求重定向、请求转发等高级功能。 ... [详细]
  • 本文介绍如何将自定义项目设置为Tomcat的默认访问项目,使得通过IP地址访问时直接展示该自定义项目。提供了三种配置方法:修改项目路径、调整配置文件以及使用WAR包部署。 ... [详细]
  • 将Web服务部署到Tomcat
    本文介绍了如何在JDeveloper 12c中创建一个Java项目,并将其打包为Web服务,然后部署到Tomcat服务器。内容涵盖从项目创建、编写Web服务代码、配置相关XML文件到最终的本地部署和验证。 ... [详细]
  • 选择适合生产环境的Docker存储驱动
    本文旨在探讨如何在生产环境中选择合适的Docker存储驱动,并详细介绍不同Linux发行版下的配置方法。通过参考官方文档和兼容性矩阵,提供实用的操作指南。 ... [详细]
author-avatar
歪果仁
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有