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