SpringMVC图片文件跨服务器上传

网友投稿 259 2022-12-29


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


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:系统接口设计的目的(接口设计的主要内容包括)
下一篇:非匿名内部类可以实现接口(接口引用可以指向实现该接口的匿名类对象)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~