当前位置: 移动技术网 > IT编程>开发语言>Java > SpringMVC图片文件跨服务器上传

SpringMVC图片文件跨服务器上传

2019年09月07日  | 移动技术网IT编程  | 我要评论

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

一、上传服务器:

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

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

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网