spring mvc 怎么上传图片

fiy 其他 24

回复

共3条回复 我来回复
  • worktile的头像
    worktile
    Worktile官方账号
    评论

    Spring MVC上传图片的步骤可以分为以下几个部分:

    1. 在前端页面中使用HTML的
      标签创建一个上传图片的表单,设置表单的action属性为指定的Controller方法的映射路径。
    <form action="/upload" method="post" enctype="multipart/form-data">
        <input type="file" name="file"/>
        <input type="submit" value="上传"/>
    </form>
    
    1. 在Controller中创建一个方法来处理上传图片的请求,并使用@RequestParam注解绑定请求中的图片文件。在方法体中,调用MultipartFile的transferTo方法将图片文件保存到指定的位置。
    @Controller
    public class UploadController {
        @RequestMapping(value = "/upload", method = RequestMethod.POST)
        public String upload(@RequestParam("file") MultipartFile file) throws IOException {
            if (!file.isEmpty()) {
                // 获取文件的原始名称
                String fileName = file.getOriginalFilename();
                // 设置图片保存的路径
                String filePath = "E:/upload/";
                File dest = new File(filePath + fileName);
                // 保存图片文件
                file.transferTo(dest);
                // 处理上传成功后的逻辑            
                return "success";
            }
            // 处理上传失败后的逻辑
            return "error";
        }
    }
    
    1. 在Spring的配置文件中添加对文件上传的配置,包括限制上传文件大小、设置临时文件存储路径等。
    <!-- 配置文件上传的Bean -->
    <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
        <!-- 设置最大上传文件大小,单位字节 -->
        <property name="maxUploadSize" value="52428800"/>
        <!-- 设置临时文件存储路径 -->
        <property name="uploadTempDir" value="/tmp"/>
    </bean>
    

    以上就是使用Spring MVC上传图片的基本步骤。根据实际需求,可以在Controller中进行额外的验证、图片处理等操作。

    1年前 0条评论
  • 不及物动词的头像
    不及物动词
    这个人很懒,什么都没有留下~
    评论

    Spring MVC提供了多种方式来上传图片。下面是实现图片上传的步骤:

    1. 配置MultipartResolver:在Spring MVC的配置文件中配置MultipartResolver,用于处理文件上传。可以通过 Java 配置或 XML 配置来实现。

    Java 配置示例:

    @Configuration
    @EnableWebMvc
    public class WebConfig implements WebMvcConfigurer {
    
       @Bean
       public MultipartResolver multipartResolver() {
          CommonsMultipartResolver resolver = new CommonsMultipartResolver();
          resolver.setDefaultEncoding("utf-8");
          return resolver;
       }
    }
    

    XML 配置示例:

    <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
       <property name="defaultEncoding" value="UTF-8"/>
    </bean>
    
    1. 创建上传图片的表单:在需要上传图片的页面上创建一个表单,其中包含一个文件选择的输入框。
    <form method="post" action="/upload" enctype="multipart/form-data">
       <input type="file" name="file" />
       <input type="submit" value="上传" />
    </form>
    
    1. 创建Controller:创建一个Controller来处理图片上传请求。
    @Controller
    public class UploadController {
    
       @PostMapping("/upload")
       public String upload(@RequestParam("file") MultipartFile file) {
          // 处理上传的文件
          if (!file.isEmpty()) {
             try {
                // 获取文件名
                String fileName = file.getOriginalFilename();
                // 获取文件的字节内容
                byte[] bytes = file.getBytes();
                // 保存文件到指定位置
                Path path = Paths.get("uploads/" + fileName);
                Files.write(path, bytes);
    
                return "redirect:/success"; // 重定向到上传成功页面
    
             } catch (IOException e) {
                e.printStackTrace();
             }
          }
    
          return "redirect:/error"; // 重定向到上传失败页面
       }
    }
    
    1. 配置文件保存路径:在Spring MVC的配置文件中配置文件保存路径。
    <mvc:resources mapping="/uploads/**" location="/uploads/"/>
    
    1. 创建上传成功和失败的页面:创建上传成功和失败的页面,并在Controller中进行相应的页面跳转。

    上传成功页面(success.jsp):

    <!DOCTYPE html>
    <html>
       <head>
          <title>上传成功</title>
       </head>
       <body>
          <h1>文件上传成功!</h1>
          <a href="/">返回首页</a>
       </body>
    </html>
    

    上传失败页面(error.jsp):

    <!DOCTYPE html>
    <html>
       <head>
          <title>上传失败</title>
       </head>
       <body>
          <h1>文件上传失败!</h1>
          <a href="/">返回首页</a>
       </body>
    </html>
    

    以上是使用Spring MVC上传图片的基本步骤,根据具体的需求,可以进行一些额外的处理,例如:限制可上传文件的大小、限制可上传文件的类型、添加图片上传进度条等。

    另外,还有一些第三方库和工具可以更便捷地实现图片上传,例如:Apache Commons FileUpload、Spring Boot等。

    1年前 0条评论
  • fiy的头像
    fiy
    Worktile&PingCode市场小伙伴
    评论

    Spring MVC提供了多种方式来实现图片上传,包括使用HTML form表单提交、使用MultipartHttpServletRequest对象和使用@PostMapping注解。以下是一种常见的方法:

    1. 创建一个HTML表单,让用户选择要上传的图片。
    <form method="POST" enctype="multipart/form-data" action="/upload">
        <input type="file" name="file" />
        <input type="submit" value="上传" />
    </form>
    
    1. 在Spring MVC的控制器中创建一个处理文件上传的方法。
    @Controller
    public class FileUploadController {
    
        @PostMapping("/upload")
        public String handleFileUpload(@RequestParam("file") MultipartFile file) {
            if (!file.isEmpty()) {
                try {
                    byte[] bytes = file.getBytes();
                    // 保存文件到指定位置
                    Path path = Paths.get("uploads/" + file.getOriginalFilename());
                    Files.write(path, bytes);
                } catch (IOException e) {
                    e.printStackTrace();
                }
                return "redirect:/success";
            } else {
                return "redirect:/error";
            }
        }
    }
    
    1. 在上传文件之前,需要配置文件上传的相关配置。
    @Configuration
    @EnableWebMvc
    public class WebConfig implements WebMvcConfigurer {
    
        @Override
        public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) {
            configurer.enable();
        }
    
        @Bean
        public MultipartResolver multipartResolver() {
            CommonsMultipartResolver resolver = new CommonsMultipartResolver();
            resolver.setDefaultEncoding("utf-8");
            return resolver;
        }
    }
    

    以上代码中,configureDefaultServletHandling()方法启用了默认的Servlet处理,并且multipartResolver()方法配置了MultipartResolver,用于处理文件上传。

    1. 要显示已上传的图片,可以在控制器中添加一个处理器方法。
    @Controller
    public class FileUploadController {
    
        // ...
    
        @GetMapping("/uploads/{filename:.+}")
        @ResponseBody
        public ResponseEntity<Resource> serveFile(@PathVariable String filename) {
            Resource file = new FileSystemResource("uploads/" + filename);
            if (file.exists()) {
                return ResponseEntity.ok().header(HttpHeaders.CONTENT_DISPOSITION,
                        "attachment; filename=\"" + file.getFilename() + "\"").body(file);
            } else {
                return ResponseEntity.notFound().build();
            }
        }
    }
    

    以上代码中,serveFile()方法根据文件名返回Resource对象,并将其作为响应的主体返回给浏览器。

    1. 要在页面上显示已上传的图片,可以使用<img>标签。
    <img src="/uploads/filename.jpg" alt="uploaded image" />
    

    请注意,上述代码中的filename.jpg应该是实际上传的文件的文件名。

    这就是使用Spring MVC上传图片的基本步骤。通过配置MultipartResolver,Spring MVC能够自动处理多部分请求并将文件保存到指定的位置。

    1年前 0条评论
注册PingCode 在线客服
站长微信
站长微信
电话联系

400-800-1024

工作日9:30-21:00在线

分享本页
返回顶部