原因:多个服务器供给多个客户端,每个服务器负责专门的一部分,分工合作,所以出现跨服务器。
跨服务器准备
- 在上传文件依赖的jar包基础上还需要(客户端)导入
- 创建新的项目,启动新的tomcat配置端口号为9090,JMX port为1090。部署项目后,在webapp下创建uploads文件(注意事项:idea创建文件夹,如果文件夹为空,就不会自动在磁盘里创建文件夹,所以需要手动创建,或者在文件夹内创建一个test.jsp使得文件夹得以创建。如若不然,直接上传文件跨服务器,会报409错误)
- 为了防止405错误,打开TOMACT文件夹内,cof文件夹下,web.xml中,114行,加入
<init-param> <param-name>readonly</param-name> <param-value>false</param-value> </init-param>
并将初始化时的listings改为false。
此时tomcat就运行方法运行了。
4.至此,环境搭建完成,开始写Controller:
1.创建一个跨服务器的路径(注意localhost:9090/后要加设定的项目名后,再加uploads/,之所以要加/是方便后续写文件名的时候,不用再添加/了。:String path = "http://localhost:9090/testTomcat/uploads/";/
2.获取原文件名:String originalFilename = upload.getOriginalFilename();
3.获取UUID创建的随机名:String replace = UUID.randomUUID().toString().replace("-", "");
4.文件名=原文件名+"_"+随机名:String filenName=originalFilename+"_"+replace;
5.创建client(客户端对象):Client client = Client.create();
6.客户端对象绑定(路径+文件名(此时只是文件名))返回一个类似路径的类:WebResource resource = client.resource(path + filenName);
7.在此路径上put方法上传upload参数(也就是页面传来的数据):resource.put(upload.getBytes());
总体示例: