springMVC跨服务器上传文件

原因:多个服务器供给多个客户端,每个服务器负责专门的一部分,分工合作,所以出现跨服务器。

跨服务器准备

  1. 在上传文件依赖的jar包基础上还需要(客户端)导入springMVC跨服务器上传文件_第1张图片
  2. 创建新的项目,启动新的tomcat配置端口号为9090,JMX port为1090。部署项目后,在webapp下创建uploads文件(注意事项:idea创建文件夹,如果文件夹为空,就不会自动在磁盘里创建文件夹,所以需要手动创建,或者在文件夹内创建一个test.jsp使得文件夹得以创建。如若不然,直接上传文件跨服务器,会报409错误)
  3. 为了防止405错误,打开TOMACT文件夹内,cof文件夹下,web.xml中,114行,加入
     <init-param>
            <param-name>readonly</param-name>
            <param-value>false</param-value>
        </init-param>
  1. 405错误
    并将初始化时的listings改为false。false
    此时tomcat就运行方法运行了。
    4.至此,环境搭建完成,开始写Controller:
    1.创建一个跨服务器的路径(注意localhost:9090/后要加设定的项目名后,再加uploads/,之所以要加/是方便后续写文件名的时候,不用再添加/了。
String path = "http://localhost:9090/testTomcat/uploads/";
2.获取原文件名:
String originalFilename = upload.getOriginalFilename();
3.获取UUID创建的随机名:
String replace = UUID.randomUUID().toString().replace("-", "");
4.文件名=原文件名+"_"+随机名:
String filenName=originalFilename+"_"+replace;
5.创建client(客户端对象):
    Client client = Client.create();
6.客户端对象绑定(路径+文件名(此时只是文件名))返回一个类似路径的类:
  WebResource resource = client.resource(path + filenName);
7.在此路径上put方法上传upload参数(也就是页面传来的数据):
resource.put(upload.getBytes());
**总体示例:
    @RequestMapping(path = "/uploadfile2")
    public String uploadfile2(MultipartFile upload) throws IOException {
     
        System.out.println("跨服务器上传开始");
        //1.创建跨服务器文件路径
        String path = "http://localhost:9090/testTomcat/uploads/";//如果最后不加/则文件名前要加/
        //2.获取名字,
        String originalFilename = upload.getOriginalFilename();
        //3.获取随机名字
        String replace = UUID.randomUUID().toString().replace("-", "");
        //4.文件名=名字+随机名字
        String filenName=originalFilename+"_"+replace;
        //5.创建客户端
        Client client = Client.create();
        //6.客户端绑定路径返回一个资源上传类(连接)
        WebResource resource = client.resource(path + filenName);//类似于创建一个连接
        //7.将页面传送过来的文件进行上传
        resource.put(upload.getBytes());
        System.out.println("跨服务上传结束");
        return "fuck";
    }

**

你可能感兴趣的:(java,web)