idea 内置tomcat jersey 跨服务器 上传文件报400错误

Posted ☆♂安♀★

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了idea 内置tomcat jersey 跨服务器 上传文件报400错误相关的知识,希望对你有一定的参考价值。

报错内容

com.sun.jersey.api.client.UniformInterfaceException: PUT http://.jpg returned a response status of 400 Bad Request

 

因为跨服务器上传文件,文件名中里面含有中文名称,所以报错,解决:

让文件服务器支持utf-8编码或者将文件名变成英文。(最好的就是根据时间加随机数 或者是UUID来命名)

 

简单版的jsersey上传

    @RequestMapping("/fileupload3")
    public String fileuoload3(MultipartFile upload) throws Exception {
        System.out.println("跨服务器文件上传...");

        // 定义上传文件服务器路径
        //String path = "http://localhost:9090/uploads/";
        String path="http://localhost:9082/fileuploadserver_war/uploads/";

        // 说明上传文件项
        // 获取上传文件的名称
        String filename = upload.getOriginalFilename();
        // 把文件的名称设置唯一值,uuid
        String uuid = UUID.randomUUID().toString().replace("-", "");
        filename = uuid+"_"+filename;

        // 创建客户端的对象
        Client client = Client.create();

        // 和图片服务器进行连接
        WebResource webResource = client.resource(path + filename);

        // 上传文件
        webResource.put(upload.getBytes());

        return "success";
    }

  前端html代码

  <h3>跨服务器文件上传</h3>

    <form action="/user/fileupload3" method="post" enctype="multipart/form-data">
        选择文件:<input type="file" name="upload" /><br/>
        <input type="submit" value="上传" />
    </form>

  引用的包地址

    <!--文件上传-->
        <dependency>
            <groupId>commons-fileupload</groupId>
            <artifactId>commons-fileupload</artifactId>
            <version>1.3.1</version>
        </dependency>
        <dependency>
            <groupId>commons-io</groupId>
            <artifactId>commons-io</artifactId>
            <version>2.2</version>
        </dependency>

        <!--跨服务器文件上传的插件-->
        <dependency>
            <groupId>com.sun.jersey</groupId>
            <artifactId>jersey-core</artifactId>
            <version>1.18.1</version>
        </dependency>
        <dependency>
            <groupId>com.sun.jersey</groupId>
            <artifactId>jersey-client</artifactId>
            <version>1.18.1</version>
        </dependency>

 

 

来源:dillqq ,另外关于如果有人要参考jersey上传写法 看JustCode

 

 

 

以上是关于idea 内置tomcat jersey 跨服务器 上传文件报400错误的主要内容,如果未能解决你的问题,请参考以下文章

jersey + tomcat 实现restful风格

AJAX POST To Jersey 启用 RESTful Web 服务跨域

我的web项目在 TOmcat 下能正常运行,换到Weblogic 下 报错,

新建一个tomcat服务器,spring+jersey完成上传图片的实现

Jersey 中不允许的 405 方法正在返回 Tomcat 的 405 页面

如何在 tomcat 7 中的 Jersey 2 中使用异步回调