zoukankan      html  css  js  c++  java
  • 文件上传——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";
            }
        }
      
      
  • 相关阅读:
    c 中有关打印*,字符的题目集
    c 求两个整数的最大公约数和最小公倍数
    cygwin中vim的使用方法
    window下如何搭建linux环境
    ORA-00923: 未找到要求的 FROM 关键字
    c# datagridviewcomboboxcell值无效的解决办法
    sql substring charindex
    C# 中datagridview行里面有三个cheeckbox,要控制成三选一。
    程序中使用事务来管理sql语句的执行,执行失败时,可以达到回滚的要求。
    WinForm界面中快捷键设置
  • 原文地址:https://www.cnblogs.com/aitiknowledge/p/12796551.html
Copyright © 2011-2022 走看看