jersey.api.client.UniformInterfaceException :returned a response status of 403 Forbidden
图片服务器:端口8082
图片上传:
public PictureResult uploadFile(MultipartFile uploadFile) {
PictureResult result=new PictureResult();
//判断图片是否为空
if (uploadFile.isEmpty()) {
result.setError(1);
result.setMessage("图片为空");
return result;
}
//图片上传服务器
try {
//文件名称 在服务器可能重复
String newFileName=new SimpleDateFormat("yyyymmddHHmmssSSS").format(new Date());
//文件名+随机数 防止重复
Random random=new Random();
for (int i = 0; i < 3; i++) {
newFileName=newFileName +random.nextInt(10);
}
//根据日期生成目录
String path= new SimpleDateFormat("yyyy").format(new Date())+"/"
+new SimpleDateFormat("mm").format(new Date())+"/"+
new SimpleDateFormat("dd").format(new Date())+"/";
//获取文件扩展名
String suffix = FilenameUtils.getExtension(uploadFile.getOriginalFilename());
//创建jesy服务器 进行跨服务器上传
Client client = Client.create();
//把文件关联到远程服务器
String url=PIC_HOST+path+newFileName+"."+suffix;
WebResource resource = client.resource(url);
//上传
resource.put(String.class, uploadFile.getBytes());
//上传成功 响应给客户端
result.setError(0);
result.setUrl(url);
} catch (Exception e) {
e.printStackTrace();
result.setError(1);
result.setMessage("图片上传失败");
}
return result;
后来定位到 put的地方:
后来发现 :图片服务器的 配置下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>listings</param-name>
<param-value>true</param-value>
</init-param>
<!-- readonly Is this context "read only", so HTTP -->
<!-- commands like PUT and DELETE are --> <!-- rejected? [true]
<init-param> <param-name>readonly</param-name> <param-value>false</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet>