今天在搞文件的跨服务器传送,最后遇到了一个403的问题
话不多说上代码(用的SpringMVC框架)
写入Controller的方法
/**
* Springmvc的文件上传的方法,跨服务器上传
* @param
* @return
* @throws Exception
*/
@RequestMapping("/fileload3")
public String fileload3(MultipartFile upload) throws Exception {
System.out.println("跨服务器文件上传执行了。。。。。。。");
//定义文件的服务器路径
String path ="http://localhost:7777/uploads/";
//先得到文件项目的名字
String filename= upload.getOriginalFilename();
//把文件名设置成唯一的,uuid通用唯一标识码
String uuid= UUID.randomUUID().toString().replace("-","");
filename=uuid+"_"+filename;
//创建客户的对象,这个Client类必须是com.sun.jersey.api.client.Client包下的;
Client client= Client.create();
//和图片的服务器连接
WebResource webResource= client.resource(path+ filename);
//上传文件,通过字节传送
webResource.put(upload.getBytes());
System.out.println("写入成功!");
return "successful";
}
jsp 的代码
<h3>SpringMVC的跨服务器文件上传</h3>
<form action="/anno/fileload3" method="post" enctype="multipart/form-data">
选择文件 <input type="file" name="upload" /><br/>
<input type="submit" name="上传" /><br/>
</form>
最后通过在本地开两个tomcat服务器进行模拟两个服务器
在第二个工程的web-app里面创建好一个文件叫uploads
然后两个工程都开启服务器
最后我点击文件上传
com.sun.jersey.api.client.UniformInterfaceException:returned a response status of 403,最后通过百度了解到tomcat是默认不允许我们上传文件
1.打开你的tomcat的安装的路径,点击conf,找到web.xml打开,然后搜索DefaultServlet
找到这个位置:
<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>listings</param-name>
<param-value>false</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
加入
<init-param>
<param-name>readonly</param-name>
<param-value>false</param-value>
</init-param>
然后重启tomcat就ok啦
我的控制台显示了
另外如果报错误409 就检查第二个工程的targe项目里面是不是没有文件夹uploads
没有就自己手动一个