----------基于Tomcat搭建文件服务器
目的: 快速搭建自己的文件服务器,做到文件和项目分离
原理:tomcat映射虚拟目录作为文件服务器,使用Jersey客户端,跨服务器上传文件
Jersey客户端代码:
//Jersey客户端
private Client client = Client.create();
/**
* 需求:上传文件,页面不刷新,图片里面回显
* 技术:ajax,跨服服务器上传
* 请求:uploadPic
* 参数:String fileName
* 返回值:图片地址json格式路径
* 文件名:防止文件名重复
* 分布式文件名定义:毫秒+随机数
*/
@RequestMapping("upload")
public void uploadPic(HttpServletRequest request,String fileName,Integer type, HttpServletResponse response){
try {
//把request转换成多部件请求对象
MultipartHttpServletRequest mh = (MultipartHttpServletRequest) request;
//根据文件name属性名称获取文件对象
CommonsMultipartFile cm = (CommonsMultipartFile) mh.getFile(fileName);
long size = cm.getSize();
if (size > 2097152) {//2M
outJsonObj(new RespObjInfo(ErrorCode.BUSINESS_ERROR_2001,"文件过大!"),memberNo,osName,"1001", version, response);
return;
}
//获取文件扩展名
//获取文件名称
String originalFilename = cm.getOriginalFilename();
if (judgeLegalOfPic(originalFilename)) {
return;
}
//截取获取文件扩展名
String extName = originalFilename.substring(originalFilename.lastIndexOf("."));
//使用毫秒+随机数定义文件名
long currentTimeMillis = System.currentTimeMillis();
//文件名
String fn = currentTimeMillis+"";
//随机数
Random r = new Random();
for(int i=0;i<4;i++){
fn=fn+r.nextInt(10);
}
//文件名
fn=fn+extName;
//上传文件
String pathPic = Constants.PATH_MAP.get(type);
if (StringUtils.isBlank(pathPic)) {
//路径类型不合法
}
//指定远程服务器绝对路径
WebResource resource = client.resource(Constants.IMAGE_HOST + pathPic + fn);
//上传文件
resource.put(String.class, cm.getBytes());
//图片回显
//把远程图片服务图片地址返回给页面ajax解析
String fullPath = Constants.IMAGE_HOST + pathPic + fn;
//打印路径,路径json格式
Map<String,String> jsonResult = new HashMap<String,String>();
jsonResult.put("fullPath", fullPath);
} catch (Exception e) {
e.printStackTrace();
}
}
有没有感觉很简单,这样就完成客户端开发了
服务端配置tomcat server.xml:
<Context docBase="E:\pic" path="/pic" reloadable="false"/>
以上就完成了服务器配置,可以双击666了吧
jersey maven依赖:
<!-- https://mvnrepository.com/artifact/com.sun.jersey/jersey-client -->
<dependency>
<groupId>com.sun.jersey</groupId>
<artifactId>jersey-client</artifactId>
<version>1.19.4</version>
</dependency>
注意: tomcat需要配置 readonly为false ;
有没有感觉很简单,就是这样easy