java 服务器 文件_前后端分离跨服务器文件上传-Java SpringMVC版

近来工作上不上特别忙,加上对后台java了解一点,所以就抽时间,写了一个java版本的前后端分离的跨服务器文件上传功能,包括前后端代码。

一、Tomcat服务器部分

1、Tomcat服务器

单独复制一份Tomcat,用来作为文件服务器

1.1 web.xml文件:

需要在该Tomcat的conf目录下的web.xml文件的大概100行添加如下几行(红框内部分):

5b1fadd864ea35d02e6bd4a586eaaa6d.png

1.2 server.xml文件:

需要在该Tomcat的conf目录下的server.xml文件做一些端口的修改

edd627be3648811f2ce56674456e2fec.png

777f48793f1aed0f5363825b0a5cc8f6.png

480cc467a45dc7ee1880512a57876ad6.png

1.3 Tomcat下建立文件夹

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

a097f840fc9ee560ea8e31a018df9b10.png

1.4 启动Tomcat服务器

以上三步做完后,就可以启动Tomcat服务器了,在Tomcat的bin目录下执行 startup.sh 脚本

229c36ca54e990ba0f2c953803947584.png

二、java部分

c2676d75b4f8c400461ae96d07c5032a.png

2.1 jar包

除了其他的jar包以外,还需要以下几个jar包

commons-io-1.3.2.jar

commons-fileupload-1.2.1.jar

jersey-client-1.18.1.jar

jersey-core-1.18.1.jar

jersey-common

3fca0eaf437b197a04b6e669acfc22a7.png

6971fae8d3f5c5018c5dd9f31ee0fffa.png

2.2 配置文件

2.2.1 spring-mvc.xml文件添加如下部分:

2.2.2 config.properties 文件添加如下部分:

#文件服务器地址

uploadHost=http://172.16.5.102:8090/

#上传的文件保存的目录

imgPath = upload/

2.3 java文件

2.3.1 Upload.java

packagecom.lin.utils;importjava.io.File;importjava.io.IOException;importjava.text.SimpleDateFormat;importjava.util.Date;importjavax.servlet.http.HttpServletRequest;importjavax.servlet.http.HttpServletResponse;importorg.apache.commons.io.FilenameUtils;importorg.springframework.web.multipart.MultipartFile;importcom.sun.jersey.api.client.Client;importcom.sun.jersey.api.client.WebResource;/*** 上传文件工具类

*@authorlibo*/

public classUpload {/*** 上传文件

*@paramrequest

*@paramresponse

*@paramserverPath 服务器地址:(http://172.16.5.102:8090/)

*@parampath 文件路径(不包含服务器地址:upload/)

*@return

*/

public staticString upload(Client client, MultipartFile file, HttpServletRequest request,HttpServletResponse response, String serverPath, String path){//文件名称生成策略(UUID uuid = UUID.randomUUID())

Date d = newDate();

SimpleDateFormat format= new SimpleDateFormat("yyyyMMddHHmmss");

String formatDate=format.format(d);

String str= "";for(int i=0 ;i <5; i++){int n = (int)(Math.random()*90)+10;

str+=n;

}//获取文件的扩展名

String extension =FilenameUtils.getExtension(file.getOriginalFilename());//文件名

String fileName = formatDate + str + "." +extension;//相对路径

String relaPath = path +fileName;

String a= serverPath + path.substring(0, path.lastIndexOf("/"));

File file2= newFile(a);if(!file2.exists()){boolean mkdirs =file2.mkdirs();

System.out.println(mkdirs);

}//另一台tomcat的URL(真实路径)

String realPath = serverPath +relaPath;//设置请求路径

WebResource resource =client.resource(realPath);//发送开始post get put(基于put提交)

try{

resource.put(String.class, file.getBytes());return fileName+";"+relaPath+";"+realPath;

}catch(IOException e) {

e.printStackTrace();return "";

}

}/*** 删除文件

*@paramfilePath(文件完整地址:http://172.16.5.102:8090/upload/1234.jpg)

*@return

*/

public staticString delete(String filePath){try{

Client client= newClient();

WebResource resource=client.resource(filePath);

resource.delete();return "y";

}catch(Exception e) {

e.printStackTrace();return "n";

}

}

}

2.3.2 controller层

packagecom.lin.controller;importjava.io.File;importjava.io.IOException;importjava.text.SimpleDateFormat;importjava.util.ArrayList;importjava.util.Date;importjava.util.HashMap;importjava.util.List;importjava.util.Map;importjavax.annotation.Resource;importjavax.servlet.ServletContext;importjavax.servlet.http.HttpServletRequest;importjavax.servlet.http.HttpServletResponse;importorg.springframework.beans.factory.annotation.Value;importorg.springframework.stereotype.Controller;importorg.springframework.web.bind.annotation.RequestMapping;importorg.springframework.web.bind.annotation.RequestMethod;importorg.springframework.web.bind.annotation.RequestParam;importorg.springframework.web.bind.annotation.ResponseBody;importorg.springframework.web.multipart.MultipartFile;importorg.springframework.web.multipart.MultipartHttpServletRequest;importorg.springframework.web.multipart.MultipartResolver;importorg.springframework.web.multipart.commons.CommonsMultipartResolver;importorg.springframework.web.servlet.config.VelocityConfigurerBeanDefinitionParser;importcom.lin.domain.data.ResData;importcom.lin.domain.data.ResListData;importcom.lin.domain.error.Error;importcom.lin.domain.sysUser.SysUser;importcom.lin.domain.sysUser.SysUserWithDep;importcom.lin.service.SysUserService;importcom.lin.utils.Aes;importcom.lin.utils.DateTimeUtils;importcom.lin.utils.ResponseUtils;importcom.lin.utils.Upload;importcom.lin.utils.Utils;importcom.sun.jersey.api.client.Client;importnet.sf.json.JSONObject;/*** 后台用户-controller

*@authorlibo*/@Controller

@RequestMapping("/sysUser")public classSysUserController {

@ResourceprivateSysUserService sysUserService;

@Value(value="${imgPath}") //后台图片保存地址

privateString imgPath;

@Value(value="${uploadHost}")private String uploadHost; //项目host路径

/*** 后台用户登陆功能*@return*@throwsIOException*/@ResponseBody

@RequestMapping(value="/login.do", method=RequestMethod.POST)public voidlogin(HttpServletRequest req, HttpServletResponse res,

@RequestParam(required=true) String loginEmail,

@RequestParam(required=true) String loginPwd) throwsIOException{

//代码省略}/*** 根据id查询用户信息(包括部门信息)

*@paramreq

*@paramres

*@paramid

*@throwsIOException*/@ResponseBody

@RequestMapping(value="/getSysUser.do", method=RequestMethod.GET)public voidgetSysUser(HttpServletRequest req, HttpServletResponse res,

@RequestParam(required=true) Integer id) throwsIOException{

//代码省略}/*** 更新后台用户信息

*@paramreq

*@paramres*@throwsIOException*/@ResponseBody

@RequestMapping(value="/updateSysUser.do" ,method=RequestMethod.POST)public void updateSysUser(HttpServletRequest req, HttpServletResponse res) throwsIOException{

//代码省略}/*** 添加用户

*@paramreq

*@paramres

*@throwsIOException*/@ResponseBody

@RequestMapping(value="/addSysUser.do", method=RequestMethod.POST)public void addSysUser(HttpServletRequest req, HttpServletResponse res) throwsIOException {

//代码省略}/*** 上传用户头像

*@paramrequest

*@paramresponse*/@ResponseBody

@RequestMapping(value="uploadSysHeadImg.do", method=RequestMethod.POST)public voiduploadSysHeadImg(HttpServletRequest request,HttpServletResponse response){

JSONObject jo= newJSONObject();try{

MultipartResolver resolver= newCommonsMultipartResolver(request.getSession().getServletContext());

MultipartHttpServletRequest Murequest=resolver.resolveMultipart(request);

Map files = Murequest.getFileMap();//得到文件map对象//实例化一个jersey

Client client = newClient();

List fileNameList = new ArrayList<>();

List relaPathList = new ArrayList<>();

List realPathList = new ArrayList<>();for(MultipartFile pic: files.values()){String uploadInfo = Upload.upload(client, pic, request, response, uploadHost, imgPath);

if(!"".equals(uploadInfo)){    //上传成功

String[] infoList = uploadInfo.split(";");

fileNameList.add(infoList[0]);    //文件名

relaPathList.add(infoList[1]);    //相对路径

realPathList.add(infoList[2]);    //真实完整路径

}else{    //上传失败

fileNameList.add("");

relaPathList.add("");

realPathList.add("");

}

}

jo.put("success", 1);

jo.put("error", null);

jo.put("fileNameList", fileNameList);

jo.put("relaPathList", relaPathList);

jo.put("realPathList", realPathList);

}catch(Exception e) {

jo.put("success", 0);

jo.put("error", "上传失败");

}

ResponseUtils.renderJson(response, jo.toString());

}

}

其他的java文件省略,然后运行java项目

三、前端部分

3.1 index1-cropper图片剪切上传

index1-cropper图片剪切上传
上传之前的图片
上传之后服务器的图片

上传头像

保存

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值