簡單來說:文件服務器缺少允許文件讀寫的配置,直接跳到本帖下面web.xml文件部分,添加配置信息即可解決!
使用springmvc 跨服務器進行文件上傳時出現錯誤:
jersey 上傳文件報錯出現returned a response status of 403 Forbidden 或returned a response status of 409 Conflict
409錯誤一般為文件服務器存放文件的目錄結構不完整,找不到路徑,需要自己進行目錄結構完善和補全,即可排查錯誤。
403錯誤如下:
HTTP Status 500 – Internal Server Error
Type Exception Report
Message Request processing failed; nested exception is com.sun.jersey.api.client.UniformInterfaceException: PUT http://localhost:8081/uploads/2cc1ed31ffc1411d9d5808107ae28453_logo.png returned a response status of 403 Forbidden
Description The server encountered an unexpected condition that prevented it from fulfilling the request.
Exception
org.springframework.web.util.NestedServletException: Request processing failed; nested exception is com.sun.jersey.api.client.UniformInterfaceException: PUT http://localhost:8081/uploads/2cc1ed31ffc1411d9d5808107ae28453_logo.png returned a response status of 403 Forbidden
org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:986)
org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:881)
javax.servlet.http.HttpServlet.service(HttpServlet.java:661)
org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:855)
javax.servlet.http.HttpServlet.service(HttpServlet.java:742)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:200)
org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
Root Cause
com.sun.jersey.api.client.UniformInterfaceException: PUT http://localhost:8081/uploads/2cc1ed31ffc1411d9d5808107ae28453_logo.png returned a response status of 403 Forbidden
原因:
因為所使用的文件服務器,單純用來存儲文件,還未進行其他配置,未配置支持文件寫入所以出現問題。
網上搜索之后解決方式為在servlet標簽下添加:
<init-param>
<param-name>readonly</param-name>
<param-value>false</param-value>
</init-param>
因為沒有進行任何配置,連servlet標簽都沒有,無法直接添加,所以提供一個相對純凈的模板來提供tomcat服務器針對支持文件寫入的配置
web.xml
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd" > <!--suppress ALL --> <web-app> <display-name>Archetype Created Web Application</display-name> <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> </web-app>
添加之后,文件服務器進行正常工作,查看存放目錄,文件均正常存儲。