springmvc中Tomcat跨服務器上傳中文名文件報錯解決方案


今天花了一整天時間解決tomcat跨服務器上傳文件失敗的問題,經過各種搜索終於解決了,下面是解決具體方法:

一、首先修改Tomcat的只讀屬性為false。

在tomcat的conf目錄下的web.xml文件中找到<servlet>標簽,添加初始化參數readonly,代碼如下:

    <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>

 

二、將文件名進行URL編碼:

這個能夠解決狀態碼為400的錯誤。注意:

URLEncoder的導包語句為  import java.net.URLEncoder;不要導錯了另一個包,我就不寫錯誤包出來了以免誤導。

 

@Controller @RequestMapping("springmvc/user") public class UserController { /** * 跨服務器文件上傳 * @param upload * @return 跳轉到success.jsp的頁面 * @throws Exception */ @RequestMapping("/fileUpload3") public String fileUpload3(MultipartFile upload) throws Exception{ System.out.println("跨服務器文件上傳。。。。"); //定義上傳文件服務器的路徑
        String path = "http://localhost:9090/uploads/"; //說明文件上傳項 //獲取上傳文件的名稱
        String filename = upload.getOriginalFilename(); //URLEncoder的導包語句為 import java.net.URLEncoder;
        String encodeFileName = URLEncoder.encode(filename,"UTF-8"); //這個輸出語句為調試用 // System.out.println(encodeFileName); //防止文件重復
        String uuid = UUID.randomUUID().toString().replace("-",""); filename = uuid + "-" + encodeFileName; //這個輸出語句為調試用 // System.out.println(filename); //創建客戶端對象
        Client client = Client.create(); //和圖片服務器進行連接
        WebResource webResource = client.resource(path+filename); //上傳文件
 webResource.put(upload.getBytes()); return "success"; } }

三、最后一步(如果有這個問題就解決,沒有可忽略)

如果還是報409的錯誤,你最好在tomcat的webapps目錄下建立一個uploads目錄,這個目錄在你要上傳文件的那個tomcat服務器的對應虛擬目錄下建立,和你上面寫的path那個對應。

我的虛擬目錄是 “/” ,所以就直接建立了一個uploads的目錄就好了。如圖

 

這下子我的問題就都解決了,能夠成功上傳文件到另一個服務器了。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM