实现跨服务器文件上传

本文详细介绍了如何在两个不同版本的Tomcat服务器间实现文件上传功能。通过在接收服务器配置可写权限,A服务器(上传方)利用Maven工程进行文件上传,而B服务器(接收方)使用普通Web工程接收。文章提供了所需依赖包、前端页面编写、Controller业务逻辑及服务器启动步骤,强调了文件名编码的重要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

第一步,打开两个tomcat不同版本,一个tomcat用来实现文件上传(暂且称为A服务器)这里我用的maven工程,一个tomcat用来接收文件(暂且称为b服务器)这里可以用一个普通的web工程;
首先打开b服务器的web.xml文件添加

<init-param>
            <param-name>readonly</param-name>
            <param-value>false</param-value>
        </init-param>

表示当前服务器可以写入

第二步:在A服务器下导入下包

//文件上传所需要依赖包
<dependency>
  <groupId>commons-io</groupId>
  <artifactId>commons-io</artifactId>
  <version>2.6</version>
</dependency>
<!-- https://mvnrepository.com/artifact/commons-fileupload/commons-fileupload -->
<dependency>
  <groupId>commons-fileupload</groupId>
  <artifactId>commons-fileupload</artifactId>
  <version>1.4</version>
</dependency>

//实现跨服务器文件上传所需要的依赖包
- https://mvnrepository.com/artifact/com.sun.jersey/jersey-core -->
<dependency>
  <groupId>com.sun.jersey</groupId>
  <artifactId>jersey-core</artifactId>
  <version>1.19.4</version>
</dependency>
<!-- https://mvnrepository.com/artifact/com.sun.jersey/jersey-client -->
<dependency>
  <groupId>com.sun.jersey</groupId>
  <artifactId>jersey-client</artifactId>
  <version>1.19.4</version>
</dependency>

第三步:在A服务器端编写前端页面

<form action="/he" method="post" enctype="multipart/form-data">
    <input type="file" name="filename" >
    <input type="submit" value="提交">
</form>

第三步编写controller端业务

@RequestMapping("/he")
public String show1( MultipartFile filename) throws NTLMException, IOException {
    //这个是B服务器的地址
    final String ADDRESS="http://localhost:9090/";
    //获取上传文件的名字
    String originalFilename = filename.getOriginalFilename();
    //使用uuid将名字修改,主要是为了安全问题
    String filenewname=UUID.randomUUID()+"-"+originalFilename;
    //创建客户端
    Client client=Client.create();
    WebResource resource = client.resource(ADDRESS+filenewname);
    //将资源发送过去
    String put = resource.put(String.class, filename.getInputStream());
    return "hello";
}

注意,方法中的参数名(MultipartFile filename)必须和页面中的<input type="file" name="filename" >中的name对应

第四步:分别启动两个服务器,(这里B服务器需要修改端口号以及JMX port,两个服务器要不一样)经行访问

这里有个问题。就是上传的文件名字最好不要是中文,否则会出错,如果要使用中文文件名字需要经行编码

URLEncoder.encode(filenewname,"utf-8");
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值