SpringMVC 本地文件上传+跨服务器文件上传

た 入场券 2022-01-22 09:13 539阅读 0赞

一、 本地文件上传

先导入两个jar包依赖坐标

  1. <!-- https://mvnrepository.com/artifact/commons-fileupload/commons-fileupload -->
  2. <dependency>
  3. <groupId>commons-fileupload</groupId>
  4. <artifactId>commons-fileupload</artifactId>
  5. <version>1.3.1</version>
  6. </dependency>
  7. <!-- https://mvnrepository.com/artifact/commons-io/commons-io -->
  8. <dependency>
  9. <groupId>commons-io</groupId>
  10. <artifactId>commons-io</artifactId>
  11. <version>2.4</version>
  12. </dependency>
  1. 文件上传的jsp页面 注意form标签中的 entype属性需设置为multipart/form-data

    <%@ page contentType=”text/html;charset=UTF-8” language=”java” %>



    Title









  1. controller控制页面

这里用到了MultipartFile 对象 主要是用来文件上传

  1. package com.qst.Controller;
  2. import org.springframework.stereotype.Controller;
  3. import org.springframework.web.bind.annotation.RequestMapping;
  4. import org.springframework.web.multipart.MultipartFile;
  5. import javax.servlet.http.HttpServletRequest;
  6. import java.io.File;
  7. import java.util.UUID;
  8. @Controller
  9. @RequestMapping("/user")
  10. public class UserController {
  11. @RequestMapping("/fileupload")
  12. public String fileupload(HttpServletRequest request , MultipartFile upload) throws Exception {
  13. System.out.println("上传。。。");
  14. String path = request.getSession().getServletContext().getRealPath("uploads");
  15. //判断该路径是否存在
  16. File file = new File(path);
  17. if(!file.exists()){
  18. //如果不存在则创建一个目录
  19. file.mkdirs();
  20. }
  21. //获取上传文件的名称
  22. String filename = upload.getOriginalFilename();
  23. //把文件名设置成一个唯一值
  24. String uid = UUID.randomUUID().toString().replace("-","");
  25. filename = uid + "_" + filename;
  26. //完成文件上传 , 将文件存放到 path 指定目录下 并 把名字设置为 filename 指定的名字
  27. upload.transferTo(new File(path,filename));
  28. return "success";
  29. }
  30. }
  1. 配置文件解析器

这里bean的id必须为multipartResolver ,bean里还可以添加一些参数 如设置上传文件的大小的最大值

  1. <!--配置文件解析器-->
  2. <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
  3. <!-- 配置上传文件的大小-->
  4. <property name="maxUploadSize" value="10000000"/>
  5. </bean>

二、跨服务器文件上传

先导jar包

  1. <!-- https://mvnrepository.com/artifact/commons-fileupload/commons-fileupload -->
  2. <dependency>
  3. <groupId>commons-fileupload</groupId>
  4. <artifactId>commons-fileupload</artifactId>
  5. <version>1.3.1</version>
  6. </dependency>
  7. <!-- https://mvnrepository.com/artifact/commons-io/commons-io -->
  8. <dependency>
  9. <groupId>commons-io</groupId>
  10. <artifactId>commons-io</artifactId>
  11. <version>2.4</version>
  12. </dependency>
  13. <!-- https://mvnrepository.com/artifact/com.sun.jersey/jersey-client -->
  14. <dependency>
  15. <groupId>com.sun.jersey</groupId>
  16. <artifactId>jersey-client</artifactId>
  17. <version>1.19</version>
  18. </dependency>
  19. <!-- https://mvnrepository.com/artifact/com.sun.jersey/jersey-client -->
  20. <dependency>
  21. <groupId>com.sun.jersey</groupId>
  22. <artifactId>jersey-core</artifactId>
  23. <version>1.19</version>
  24. </dependency>
  25. </dependencies>

创建连个服务器一个用于接收文件,一个用于上传文件。设置不同端口号

在接收文件的服务器项目中 需要开启一个支持写操作

在web.xml中加入

  1. <servlet>
  2. <servlet-name>default</servlet-name>
  3. <servlet-class>org.apache.catalina.servlets.DefaultServlet</servlet-class>
  4. <init-param>
  5. <param-name>debug</param-name>
  6. <param-value>0</param-value>
  7. </init-param>
  8. <init-param>
  9. <param-name>readonly</param-name>
  10. <param-value>false</param-value>
  11. </init-param>
  12. <init-param>
  13. <param-name>listings</param-name>
  14. <param-value>false</param-value>
  15. </init-param>
  16. <load-on-startup>1</load-on-startup>
  17. </servlet>
  18. <servlet-mapping>
  19. <servlet-name>default</servlet-name>
  20. <url-pattern>/</url-pattern>
  21. </servlet-mapping>
  1. jsp页面也普通上传文件一样

    <%@ page contentType=”text/html;charset=UTF-8” language=”java” %>



    Title









controller

  1. package com.qst.Controller;
  2. import com.sun.jersey.api.client.Client;
  3. import com.sun.jersey.api.client.WebResource;
  4. import org.springframework.stereotype.Controller;
  5. import org.springframework.web.bind.annotation.RequestMapping;
  6. import org.springframework.web.multipart.MultipartFile;
  7. import javax.servlet.http.HttpServletRequest;
  8. import java.io.File;
  9. import java.util.UUID;
  10. @Controller
  11. @RequestMapping("/user")
  12. public class UserController {
  13. @RequestMapping("/fileuploadServer")
  14. public String fileuploadServer(MultipartFile upload) throws Exception {
  15. //设置上传服务器的路径 要保证有loads这个目录
  16. String path = "http://localhost:8089/loads";
  17. //获取上传文件的名称
  18. String filename = upload.getOriginalFilename();
  19. //把文件名设置成一个唯一值
  20. String uid = UUID.randomUUID().toString().replace("-","");
  21. filename = uid + "_" + filename;
  22. //创建客户端对象
  23. Client client = Client.create();
  24. //与服务器进行连接
  25. WebResource webResource = client.resource(path + filename);
  26. //进行文件上传,并将文件转换成字节流
  27. webResource.put(upload.getBytes());
  28. return "success";
  29. }
  30. }

进行上传时需先开启接收文件的也服务器

发表评论

表情:
评论列表 (有 0 条评论,539人围观)

还没有评论,来说两句吧...

相关阅读