欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

跨服务器文件上传

程序员文章站 2022-03-11 20:05:30
...

准备两个tomcat服务器,并创建一 个用于存放图片的web工程

避免默认的8080端口被占用,先修改tomcat默认端口

打开tomcat -->conf -->server.xml
跨服务器文件上传
跨服务器文件上传
跨服务器文件上传
跨服务器文件上传
然后启动tomcat : bin -->startup.bat
跨服务器文件上传

测试能不能通

跨服务器文件上传
在webapps文件夹下再创建两个文件夹,然后放一张图片,再浏览器端试试能不能访问
跨服务器文件上传
跨服务器文件上传

tomcat的web.xml配置中加入,允许读写操作: 否则tomcat默认只有读操作

跨服务器文件上传
加入此行的含义是:接收文件的目标服务器可以支持写入操作
配置完重启服务器

pom依赖:前两个为普通文件上传需要的,最后一个是跨服务器上传需要的依赖

    <dependency>
      <groupId>org.apache.commons</groupId>
      <artifactId>commons-io</artifactId>
      <version>1.3.2</version>
    </dependency>
    <dependency>
      <groupId>commons-fileupload</groupId>
      <artifactId>commons-fileupload</artifactId>
      <version>1.3.1</version>
    </dependency>
    <dependency>
      <groupId>com.sun.jersey</groupId>
      <artifactId>jersey-client</artifactId>
      <version>1.18.1</version>
    </dependency>

Controller

import com.sun.jersey.api.client.Client;
import com.sun.jersey.api.client.WebResource;
import org.springframework.stereotype.Controller;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.multipart.MultipartFile;

import java.util.UUID;

@Controller("fileUploadController2")
public class FileUploadController2 {
    //文件上传的服务器地址
    public static final String FileUpload_URL = "http://localhost:8089/image/upload/";
    @RequestMapping("/fileUpload2")
    public String testResponseJson(String picName, MultipartFile uploadFile) throws Exception {
        //定义文件名        
        String fileName = "";
        //1.获取原始文件名
        String uploadFileName = uploadFile.getOriginalFilename();
        //2.截取文件扩展名        
        String extendName = uploadFileName.substring(uploadFileName.lastIndexOf(".") + 1, uploadFileName.length());
        //3.把文件加上随机数,防止文件重复        
        String uuid = UUID.randomUUID().toString().replace("-", "").toUpperCase();
        //4.判断是否输入了文件名
        if (!StringUtils.isEmpty(picName)) {
            fileName = uuid + "_" + picName + "." + extendName;
        } else {
            fileName = uuid + "_" + uploadFileName;
        }
        System.out.println(fileName);
        //5.创建 sun 公司提供的 jersey 包中的 Client 对象        
        Client client = Client.create();
        //6.指定上传文件的地址,该地址是 web 路径
        WebResource resource = client.resource(FileUpload_URL + fileName);
        //7.实现上传
        String result = resource.put(String.class, uploadFile.getBytes());
        System.out.println(result);
        return "success";
    }

}

jsp:

<form action="/fileUpload2" method="post" enctype="multipart/form-data">
    名称:<input type="text" name="picName"/><br/>
    图片:<input type="file" name="uploadFile"/><br/>
    <input type="submit" value="上传"/></form>
</body>

springmvc.xml

<!-- location 表示路径,mapping 表示文件,**表示该目录下的文件以及子目录的文件 -->
    <mvc:resources location="/js/" mapping="/js/**"/>
    <mvc:resources location="/uploads/" mapping="/uploads/**"/>

    <!-- 配置文件上传解析器 -->
    <!-- id 的值是固定的-->
    <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
        <!-- 设置上传文件的最大尺寸为 5MB -->
        <property name="maxUploadSize">
            <value>5242880</value>
        </property>
    </bean>

注意: 文件上传的解析器 id 是固定的,不能起别的名称,否则无法实现请求参 数的绑定。(不光是文件,其他字段也将无法绑定)

相关标签: 文件上传下载