[1] 405 Method Not Allowed
原因是因为Servlet默认是只读的,也就是写不进去(文件上传不过来)
所以要在文件服务器的 web.xml 对 Servlet 进行配置
defaultServlet
org.apache.catalina.servlets.DefaultServlet
debug
0
readonly
false
listings
false
1
defaultServlet
/
这里可能会报错说找不到 org.apache.catalina.servlets.DefaultServlet
这里需要在文件服务器项目中的pom.xml 中添加坐标
org.apache.tomcat
tomcat-catalina
9.0.34
[2] 404 Not Found
原因:在部署项目到Tomcat的时候,路劲部署到了Tomcat所在的目录下,而不是本项目所在的目录下
解决:更改部署路径
补充:上面两个路径的不同
① /springmvc_day02_03_fileuploadeserver:war
上传的文件会存放在 Tomcat 所在的目录下
② /springmvc_day02_03_fileuploadeserver:war exploded
上传的文件会存放在当前目录下
[3] 400 Bad Request
原因:路径中出现了中文
解决:路径中不要出现中文
[4] 409 Conflict
原因:我们下面的代码没有创建文件上传对应的文件夹,服务器找不到目录
/**
* 跨服务器上传
* @param upload
* @return
* @throws Exception
*/
@RequestMapping("/fileUpload3")
public String fileUpload3(MultipartFile upload) throws Exception {
System.out.println("SpringMVC跨服务器文件上传...");
//定义上传文件的服务器路径
String path = "http://localhost:9091/springmvc_day02_03_fileuploadeserver_war_exploded/uploads/";
//说明上传文件项
//获取上传文件的名称
String filename = upload.getOriginalFilename();
String uuid = UUID.randomUUID().toString().replace("-", "");
filename = filename + "_" + uuid;
//完成跨服务器文件上传
//1. 创建一个客户端对象
Client client = Client.create();
//2. 和图片服务器进行连接
WebResource webResource = client.resource(path + filename);
//3. 上传文件
webResource.put(upload.getBytes());
return "success";
}
解决:在文件服务器项目中添加相应的 uploads 文件夹