SpringMVC中关于跨服务器的文件上传
文件上传服务器中controller层的部分代码如下:
/**
* springMVC 跨服务器上传
* @param upload
* @return
*/
@RequestMapping("fileUpload3")
public String fileUpload3( MultipartFile upload) throws IOException {
System.out.println("springMVC跨服务器文件上传。。。");
//定义上传文件的服务器路径
String path = "http://localhost:9090/fileServer_war_exploded/uploads/";
//获取到上传文件的名字
String fileName = upload.getOriginalFilename();
String uuid = UUID.randomUUID().toString().replace("-","");
//把文件的名称唯一化
fileName = uuid + "_" +fileName;
//创建客户端对象
Client client = Client.create();
//和图片服务器进行连接
WebResource webResource = client.resource(path + fileName);
//上传文件
webResource.put(upload.getBytes());
return "success";
}
同时启动文件上传服务器和文件服务器,进行文件上传。
文件上传过程中遇到如下问题:
1. 405 Method Not Allowed。 方法不被允许,目标服务器不支持上传文件。
解决办法:在文件服务器中配置默认Servlet,并设置初始化参数,修改文件的只读属性。在文件服务器中的web.xml中加入以下代码:
<servlet>
<servlet-name>default</servlet-name>
<servlet-class>org.apache.catalina.servlets.DefaultServlet</servlet-class>
<init-param>
<param-name>debug</param-name>
<param-value>0</param-value>
</init-param>
<init-param>
<param-name>readonly</param-name>
<param-value>false</param-value>
</init-param>
<init-param>
<param-name>listings</param-name>
<param-value>false</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
2. 409 Conflict。 文件保存路径出错。
解决办法:可以通过打印代码中的保存路径,找到文件服务器下的该路径,在该路径下创建uploads文件夹。