文件上传——Spring MVC跨服务器

2020-04-28 16:10:01来源:博客园 阅读 ()

新老客户大回馈,云服务器低至5折

文件上传——Spring MVC跨服务器

  • 必要前提

    • form表单的enctype取值必须是multipart/form-data。enctype的功能是请求正文的类型

    • method必须是post

    • 需要有<input type="file" />标签

    • 使用commons-fileupload组件实现文件,需要导入该组件相应的支撑jar包

      • commons-fileupload-1.3.1.jar

      • commons-io-2.4.jar

    <!-- 文件上传组件 -->
        <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.4</version>
        </dependency>
    <form action="user/upload" method="post" enctype="multipart/form-data">
        <input type="file" name="avatar" />
        <input type="submit" value="上传" />
    </form>

    Spring MVC 跨服务器上传文件

    • 导入sun公司提供的jar包

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

       

    • 搭建一个图片服务器,简单来说就是再创建一个项目,将这个项目的HTTP port和JMX port端口都改一下就可以了

    • 如果出现这样的错误:PUT ***************** returned a response status of 404 Not Found ,说明需要修改tomcat服务器的web.xml主配置文件了(不是项目目录下的web.xml),在配置文件中添加代码即可

      <init-param>
          <param-name>readonly</param-name>
          <param-value>false</param-value>
      </init-param>
    • 如果出现这样的错误:PUT **************** returned a response status of 409 Conflict,说明图片服务器缺少文件目录,这个时候是在项目目录的target下的项目目录下手动创建文件保存的目录即可。

    • 控制器方法的参数名称必须和表单上文件的input标签的name值相同

      import com.sun.jersey.api.client.Client;
      import com.sun.jersey.api.client.WebResource;
      import org.springframework.web.multipart.MultipartFile;
      ?
      import java.util.UUID
      ?
      @Controller
      @ResquestMapping(value="user")
      public class UserController{
          @RequestMapping(value="upload")
          public String upload(MultipartFile avatar) throws Exception{
              //指定图片保存的服务器地址
              String path = "http://127.0.0.1:8081/uploads";
              
              String filename = avatar.getOriginalFilename();
              String uuid = UUID.randomUUID().toString().replace("-", "");
              filename = uuid+"_"+filename;
              
              //创建客户端对象
              Client client = Client.create();
              //连接图片服务器
              WenResource webResource = client.resource(path+filename);
              //上传文件
              webResource.put(avatar.getBytes());
              return "user";
          }
      }

       

    
    

原文链接:https://www.cnblogs.com/aitiknowledge/p/12796551.html
如有疑问请与原作者联系

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:Spark SQL源码解析(三)Analysis阶段分析

下一篇:SpringBoot+RabbitMQ学习笔记(四)使用RabbitMQ的三种交换器之F