`
mhbjava
  • 浏览: 96675 次
最近访客 更多访客>>
社区版块
存档分类
最新评论

Spring中实现文件上传

阅读更多

实现图片上传
  用户必须能够上传图片,因此需要文件上传的功能。比较常见的文件上传组件有Commons FileUpload(http://jakarta.apache.org/commons/fileupload/a>)和COS FileUpload(http://www.servlets.com/cos),Spring已经完全集成了这两种组件,这里我们选择Commons FileUpload。
  由于Post一个包含文件上传的Form会以multipart/form-data请求发送给服务器,必须明确告诉DispatcherServlet如何处理MultipartRequest。首先在dispatcher-servlet.xml中声明一个MultipartResolver:

<bean id="multipartResolver"
       class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
        <!-- 设置上传文件的最大尺寸为1MB -->
        <property name="maxUploadSize">
        <value>1048576</value>
    </property>
</bean>

  这样一旦某个Request是一个MultipartRequest,它就会首先被MultipartResolver处理,然后再转发相应的Controller。
  在UploadImageController中,将HttpServletRequest转型为MultipartHttpServletRequest,就能非常方便地得到文件名和文件内容:

public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) throws Exception {
    // 转型为MultipartHttpRequest:
    MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;
    // 获得文件:
    MultipartFile file = multipartRequest.getFile("file");
    // 获得文件名:
    String filename = file.getOriginalFilename();
    // 获得输入流:
    InputStream input = file.getInputStream();
    // 写入文件...
   
   
    或者:
    File source = new File(localfileName.toString());
    multipartFile.transferTo(source);
}

生成缩略图 (目录)
  当用户上传了图片后,必须生成缩略图以便用户能快速浏览。我们不需借助第三方软件,JDK标准库就包含了图像处理的API。我们把一张图片按比例缩放到120X120大小,以下是关键代码:

public static void createPreviewImage(String srcFile, String destFile) {
    try {
        File fi = new File(srcFile); // src
        File fo = new File(destFile); // dest
        BufferedImage bis = ImageIO.read(fi);


        int w = bis.getWidth();
        int h = bis.getHeight();
        double scale = (double)w/h;
        int nw = IMAGE_SIZE; // final int IMAGE_SIZE = 120;
        int nh = (nw * h) / w;
        if( nh>IMAGE_SIZE ) {
            nh = IMAGE_SIZE;
            nw = (nh * w) / h;
        }
        double sx = (double)nw / w;
        double sy = (double)nh / h;


        transform.setToScale(sx,sy);
        AffineTransformOp ato = new AffineTransformOp(transform, null);
        BufferedImage bid = new BufferedImage(nw, nh, BufferedImage.TYPE_3BYTE_BGR);
        ato.filter(bis,bid);
        ImageIO.write(bid, "jpeg", fo);
    } catch(Exception e) {
        e.printStackTrace();
        throw new RuntimeException("Failed in create preview image. Error: " + e.getMessage());
    }
}
 



分享到:
评论

相关推荐

    spring 文件上传实例

    本实例将深入探讨如何在Java Spring中实现文件上传,并提供一个完整的配置示例。文件上传在现代Web应用中有着广泛的应用,如用户头像上传、文档共享、图片库等。 首先,让我们了解一下Spring中的文件上传工作原理。...

    spring实现文件上传下载

    在Spring MVC框架中,文件上传和下载是常见的功能需求,尤其在Web应用中。Spring MVC提供了强大的支持来处理这些操作,使得开发者可以轻松地实现文件的上传和下载功能。下面将详细阐述如何利用Spring MVC来实现这两...

    springcloud处理文件上传

    本话题主要探讨如何在Spring Cloud环境中处理文件上传,特别是在结合Feign和Zuul这两个组件时的实现方法。Feign是Spring Cloud的一个声明式HTTP客户端,用于简化服务间的调用;而Zuul则是作为API网关,提供路由、...

    ssm框架--spring mvc实现文件上传

    在"ssm框架--spring mvc实现文件上传"这个项目中,我们将重点探讨如何在Spring MVC中实现实现文件上传的功能。 文件上传是Web应用中的常见需求,Spring MVC提供了便捷的API来处理这一任务。首先,你需要在表单中...

    Spring MVC实现文件的上传和下载

    通过以上步骤,你可以利用Spring MVC轻松实现文件的上传和下载功能。实际开发中,还需要结合具体需求,例如添加权限控制、进度条显示等。对于更复杂的场景,可能需要引入额外的库,如Apache Commons FileUpload,以...

    Java Spring Boot应用程序中实现文件上传和下载功能

    ### Java Spring Boot应用程序中实现文件上传和下载功能 在现代Web开发中,文件上传与下载是常见的需求之一。Spring Boot框架提供了简洁的方式帮助开发者轻松实现这些功能。本文将详细介绍如何在Spring Boot项目中...

    SPRING 实现文件上传

    只需改动一点点就可以实现所有格式的文件的上传

    SpringBoot实现文件上传和下载.docx

    总的来说,Spring Boot提供了一种简洁的方式来实现文件上传和下载功能,结合Thymeleaf和其他Spring组件,可以快速构建出功能完善的Web应用。通过合理的接口设计和实现,我们可以实现可扩展且易于维护的文件存储服务...

    基于Spring实现文件上传功能

    在本文中,我们将主要介绍基于Spring实现文件上传功能的方法。 二、Spring文件上传机制 Spring框架提供了多种方式来实现文件上传,包括使用MultipartFile接口、使用Servlet API等。其中,MultipartFile接口是...

    spring mvc文件上传实现进度条

    在Spring MVC框架中,文件上传是一项常见的功能,而实现文件上传进度条则能提供更好的用户体验。这个场景通常涉及到前端的JavaScript或jQuery库(如jQuery File Upload)与后端的Spring MVC控制器之间的交互,以及...

    spring boot 实现文件上传

    在Spring Boot应用中实现文件上传是一项常见的需求,尤其在构建Web服务时。Spring Boot提供了便捷的方式来处理文件上传,包括小文件和大文件。本示例是建立在之前集成MyBatis的基础之上,增加了文件上传的功能。 ...

    jersey+spring+srpingmvc实现上传

    【标题】:“jersey+spring+...通过这个示例,开发者可以了解到如何利用Java生态系统中的这些流行框架来实现文件上传功能,并为自己的项目提供参考。同时,理解并实践这些知识点,也有助于提升对Web开发的整体理解。

    Spring Boot实现文件上传示例代码

    本示例将深入探讨如何在Spring Boot应用中实现文件上传,包括单个文件和多个文件的上传处理。 首先,我们需要在Spring Boot的配置文件(application.properties或application.yml)中配置文件存储路径。例如: ```...

    Spring boot整合MinIO客户端实现文件管理

    MinIO 是一个基于Apache License v2.0开源协议的对象存储服务。它兼容亚马逊S3云存储服务接口,非常适合于存储大容量非结构化的数据,例如图片、视频、日志文件、备份数据和...Spring boot整合MinIO客户端实现文件管理

    Spring MVC实现文件的上传下载

    在Spring MVC中实现文件的上传和下载是常见的需求,这涉及到处理multipart/form-data类型的表单数据,以及对文件的存储和读取操作。 首先,让我们了解文件上传的基本流程。当用户通过表单提交带有文件的请求时,...

    Springboot实现文件上传

    本篇文章将深入探讨如何使用Spring Boot实现文件上传功能,包括设置服务器端口、定义文件存储路径以及如何在前端展示所上传的图片。 首先,我们需要在Spring Boot项目中引入所需的依赖。对于文件上传,我们通常会...

    基于SpringBoot的文件上传系统,前后端分离,单文件上传,多文件上传,大文件上传,断点续传,文件秒传,图片上传

    基于SpringBoot的文件上传系统,前后端分离,单文件上传,多文件上传,大文件上传,断点续传,文件秒传,图片上传 项目经过严格测试,确保可以运行! 采用前后端分离的方式进行开发,实现了几种常用的文件上传功能...

    spring mvc上传文件

    在本文中,我们将深入探讨如何使用Spring MVC框架与Ajax技术结合来实现文件上传的功能。Spring MVC是Spring框架的一部分,提供了一种模型-视图-控制器(MVC)架构模式,用于构建Web应用程序。Ajax(Asynchronous ...

    ajaxupload在spring mvc4.2中实现简单文件上传

    在Spring MVC 4.2框架中实现AjaxUpload(异步文件上传)是一个常见的需求,它允许用户在不刷新整个页面的情况下进行文件上传,提供更好的用户体验。以下是对这一主题的详细阐述: 1. **AjaxUpload简介**: Ajax...

Global site tag (gtag.js) - Google Analytics