在实际开发过程中,会有很多处理不同功能的服务器。
应用服务器:负责部署我们的应用。
数据库服务器:运行我们的数据库。
缓存和消息服务器:负责处理大并发访问的缓存和消息。
文件服务器:负责存储用户上传文件的服务器。
分服务器的目的是让服务器各司其职,从而提高我们项目的运行效率。
准备两个tomcat服务器,并创建一个用于存放图片的Web工程。
在文件服务器的tomcat配置中加入,允许读写操作。
<servlet>
<init-param>
<param-name>readonly</param-name>
<param-value>false</param-value>
</init-param>
</servlet>
添加jar包:
commons-fileupload-1.3.1.jar
commons-io-2.4.jar
jersey-client-1.18.1.jar
jersey-core-1.18.1.jar
@Controller("fileUploadController2") public class FileUploadController2 { public static final String FILESERVERURL = "http://localhost:9090/day06_spring_image/uploads/"; /** * 文件上传,保存文件到不同服务器 */ @RequestMapping("/fileUpload2") public String testResponseJson(String picname,MultipartFile uploadFile) throwsException{ //定义文件名 String fileName = ""; //1.获取原始文件名 String uploadFileName = uploadFile.getOriginalFilename(); //2.截取文件扩展名 String extendName = uploadFileName.substring(uploadFileName.lastIndexOf(".")+1, uploadFileName.length()); //3.把文件加上随机数,防止文件重复 String uuid = UUID.randomUUID().toString().replace("-", "").toUpperCase(); //4.判断是否输入了文件名 if(!StringUtils.isEmpty(picname)) { fileName = uuid+"_"+picname+"."+extendName; }else { fileName = uuid+"_"+uploadFileName; } System.out.println(fileName); //5.创建 sun 公司提供的 jersey 包中的 Client 对象 Client client = Client.create(); //6.指定上传文件的地址,该地址是 web 路径 WebResource resource = client.resource(FILESERVERURL+fileName); //7.实现上传 String result = resource.put(String.class,uploadFile.getBytes()); System.out.println(result); return "success"; } }
<form action="fileUpload2" method="post" enctype="multipart/form-data"> 名称:<input type="text" name="picname"/><br/> 图片:<input type="file" name="uploadFile"/><br/> <input type="submit" value="上传"/> </form>
<!-- 配置文件上传解析器 -->
<bean id="multipartResolver" <!-- id 的值是固定的-->
class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<!-- 设置上传文件的最大尺寸为 5MB -->
<property name="maxUploadSize">
<value>5242880</value>
</property>
</bean>
SpringMVC跨服务器方式的文件上传 —— SpringMVC(十)
原文:https://www.cnblogs.com/guancangtingbai/p/12679321.html