博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
springMvc---跨服务器文件上传(实测总结)
阅读量:6238 次
发布时间:2019-06-22

本文共 4179 字,大约阅读时间需要 13 分钟。

序言:

  该案例是采用springMvc实现跨服务器图片上传功能,其中用到的主要类和工具有:CommonsMultipartResolver、jquery.form.js。如果要实现多个文件上传,只需要在input元素中加入multiple="multiple",即可选择多个文件进行上传。另外本文的上传的文件路径不是在tomcat下对应的文件夹中,而是在workspace对应的文件夹中存在。该案例使用ajax上传页面不刷新,多个图片可立即回显,并将其相对路径可以随着表单一起保存到数据库中,而文件则存放在文件服务器中。还有,点击选择,选择了文件之后,文件是依附于form表单,因此在使用jquery.form.js的$("#formId").ajaxSubmit(options)提交的表单,提交之后,文件是以流的形式通过HttpServeltRequest传递到Controller当中,之后再通过向下强转成HttpServeltRequest的实现接口MultipartHttpServletRequest进一步获取到文件集合。

 

代码:

springMvc-servlet.xml文件中需要配置:

  

jsp页面:

<%@ page language="java" contentType="text/html; charset=UTF-8"    pageEncoding="UTF-8"%><%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
Insert title here

controller:

package com.cissst.it;import java.io.IOException;import java.io.InputStream;import java.text.SimpleDateFormat;import java.util.ArrayList;import java.util.Date;import java.util.List;import java.util.Random;import javax.servlet.ServletException;import javax.servlet.http.HttpServletRequest;import net.sf.json.JSONArray;import org.springframework.stereotype.Controller;import org.springframework.web.bind.ServletRequestDataBinder;import org.springframework.web.bind.annotation.InitBinder;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.ResponseBody;import org.springframework.web.multipart.MultipartFile;import org.springframework.web.multipart.MultipartHttpServletRequest;import org.springframework.web.multipart.commons.CommonsMultipartFile;import org.springframework.web.multipart.support.ByteArrayMultipartFileEditor;import com.sun.jersey.api.client.Client;import com.sun.jersey.api.client.WebResource;@Controller@RequestMapping("/uploadController")public class UploadController {        @InitBinder    protected void initBinder(HttpServletRequest request,            ServletRequestDataBinder binder) throws ServletException {        binder.registerCustomEditor(CommonsMultipartFile.class,                new ByteArrayMultipartFileEditor());        }          @RequestMapping("upload")    @ResponseBody    public String upload(String myUploadFile,HttpServletRequest request){                //多部件请求对象        MultipartHttpServletRequest mh = (MultipartHttpServletRequest) request;        //获取文件list集合        List
files = mh.getFiles(myUploadFile); //创建jersey服务器,进行跨服务器上传 Client client = Client.create(); //json格式的图片路径 List
listJsonPath = new ArrayList
(); for (MultipartFile file : files) { String newFileName=""; SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmssSSS"); newFileName = sdf.format(new Date()); Random r = new Random(); //{'':''} String jsonPath=""; for(int i =0 ;i<3;i++){ newFileName=newFileName+r.nextInt(10); } //原始的文件名 String originalFilename = file.getOriginalFilename(); //截取文件扩展名 String suffix = originalFilename.substring(originalFilename.lastIndexOf(".")); //绝对路径(另一台服务器文件路径) String fullPath="http://127.0.0.1:8083/springMvc_fileServler/upload/"+newFileName+suffix; //相对路径(数据库中存放的文件名) String relativePath=newFileName+suffix; //各自的流 InputStream inputStream = null; try { inputStream = file.getInputStream(); } catch (IOException e1) { e1.printStackTrace(); } //将文件传入文件服务器 WebResource resource = client.resource(fullPath); resource.put(String.class, inputStream); jsonPath = "{\"fullPath\":\""+fullPath+"\",\"relativePath\":\""+relativePath+"\"}"; listJsonPath.add(jsonPath); } JSONArray jsonArray = JSONArray.fromObject(listJsonPath); return jsonArray.toString(); }}

服务器信息:

  master server's and point :

  

  

  file server's and point:

  

  you must confrim two server's point diffrence

 

上传后的文件:

  

页面回显:

  

 

转载于:https://www.cnblogs.com/pecool/p/9669030.html

你可能感兴趣的文章
JSTL标签库
查看>>
JavaWeb经典三层框架
查看>>
ZFS 阶段小结
查看>>
[Curator] Node Cache 的使用与分析
查看>>
Cisco EIGRP 小综合实验
查看>>
review what i studied `date` - 2017-3-31
查看>>
Eclipse -Maven环境集成
查看>>
设计模式之UML关系符号解释
查看>>
使用Windows 7 USB/DVD Download Tool制作WIN7系统安装盘
查看>>
全球五大顶级域名一周统计 .BIZ环比增长123.3%
查看>>
中国五大顶级域名7月第二周增4.1万 美国减3.1万
查看>>
我的友情链接
查看>>
分享Silverlight/WPF/Windows Phone/HTML5一周学习导读(3月12日-3月18日)
查看>>
再次升级!阿里云Kubernetes日志解决方案
查看>>
聊聊Dubbo - Dubbo可扩展机制实战
查看>>
mysql如何分表mysql分表的3种方法比较优点缺点
查看>>
linux平台上的扫描技术Nmap
查看>>
ACMjlb入门题 1034
查看>>
ansible-playbook批量部署安装tomcat
查看>>
ansible安装配置(一)
查看>>