`
ilvc
  • 浏览: 6090 次
  • 性别: Icon_minigender_1
  • 来自: 南昌
社区版块
存档分类
最新评论

SpringMVC 文件上传以及整合七牛云

阅读更多
本文永久链接地址:http://ilvc.me/blog/post/53
转载请注明出处:iLvc 开源 博客系统 ---- SpringMVC 文件上传以及整合七牛云

摘要: 文件上传基本每个站点都需要,本篇就详细了解下文件上传。

  • springmvc 文件上传
  • 上传文件到 七牛云

不使用SpringMVC

使用SpringMVC

配置文件:

 <!-- 上传组件  配置一定不要写错,id名字不能改。 -->
     <bean id="multipartResolver"
        class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
        <property name="defaultEncoding" value="UTF-8"/>  
        <property name="maxUploadSize" value="10000000"/>
    </bean>

前台html

<form action="xxx" method="post" ENCTYPE="multipart/form-data">
  <input type="file"  name="file"  />
  <input type="Submit" class="button" value="Submit" />
 </form>

注意1:文件上传<form > 要添加属性 ENCTYPE="multipart/form-data"
注意2:上传<input> 的 name 属性得值 要与后台一致,这个我们稍后再说。

后台处理

 @ResponseBody
     @RequestMapping("/upload")  
        public String upload( MultipartFile file,HttpServletRequest request,HttpServletResponse response) throws IOException  
        {  
         UpImgResult result = new UpImgResult();

          //如果只是上传一个文件,则只需要MultipartFile类型接收文件即可,而且无需显式指定@RequestParam注解   
            //如果想上传多个文件,那么这里就要用MultipartFile[]类型来接收文件,并且还要指定@RequestParam注解   
            //并且上传多个文件时,前台表单中的所有<input type="file"/>的name都应该是myfiles,否则参数里的myfiles无法获取到所有上传的文件   

           /* for(MultipartFile myfile : myfiles){*/   
                if(file.isEmpty()){   
                    System.out.println("文件未上传");   
                }else{   
                    System.out.println("文件长度: " + file.getSize());   
                    System.out.println("文件类型: " + file.getContentType());   
                    System.out.println("文件名称: " + file.getName());   
                    System.out.println("文件原名: " + file.getOriginalFilename());   
                    System.out.println("========================================");   
                    //如果用的是Tomcat服务器,则文件会上传到  
    //{服务发布位置}\\WEB-INF\\upload\\文件夹中   
                    String realPath = request.getSession().getServletContext().getRealPath("/resources/upload/");  
                    //这里不必处理IO流关闭的问题,因为FileUtils.copyInputStreamToFile()方法内部会自动把用到的IO流关掉,我是看它的源码才知道的   
                    FileUtils.copyInputStreamToFile(file.getInputStream(), new File(realPath, file.getOriginalFilename()));   
                }   
            /*}   */
                result.setUrl("http://ol5smga16.bkt.clouddn.com/17-6-7/72452903.jpg");
                String gsonString = new Gson().toJson(result);  
                try {
                    ResponseUtil.write(gsonString,response);
                } catch (Exception e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }

            return null;  
        }

关键部分都在注释里,这里就不在赘述了。

上传文件到 七牛云
基本的要求,你得有个七牛云账号,并创建一个空间。

当你获得了accessKey,secretKeybucket时,你就可以来上传文件到七牛云了。
七牛云上传文件的方式有很多详细看官方文档。

    @RequestMapping(value="/qiuniuupload",method=RequestMethod.POST)
    public void testQiuNiu(MultipartFile file,HttpServletRequest request,HttpServletResponse response) throws Exception{
         UpImgResult result = new UpImgResult();
        User user = (User) request.getSession().getAttribute("currentUser");

        //构造一个带指定Zone对象的配置类
        Configuration cfg = new Configuration(Zone.autoZone());
        //...其他参数参考类注释
        UploadManager uploadManager = new UploadManager(cfg);
        //...生成上传凭证,然后准备上传
        String accessKey = "xxxxx";
        String secretKey = "xxxxxxx";
        String bucket = "xxxx";
        //默认不指定key的情况下,以文件内容的hash值作为文件名
        String key = null;
        /*  byte[] uploadBytes = "hello qiniu cloud".getBytes("utf-8");
            ByteArrayInputStream byteInputStream=new ByteArrayInputStream(uploadBytes);*/
            Auth auth = Auth.create(accessKey, secretKey);
            String upToken = auth.uploadToken(bucket);
            Response qresponse;
            try {
                qresponse = uploadManager.put(file.getInputStream(),key,upToken,null, null);
                //解析上传成功的结果
                DefaultPutRet putRet = new Gson().fromJson(qresponse.bodyString(), DefaultPutRet.class);
                System.out.println(putRet.key);
                System.out.println(putRet.hash);
                result.setUrl("http://ooprvk5m6.bkt.clouddn.com/"+putRet.key);
                String gsonString = new Gson().toJson(result);
                user.setAvtar("http://ooprvk5m6.bkt.clouddn.com/"+putRet.key);
                userService.update(user);
                request.getSession().setAttribute("currentUser",userService.findUser(user));
                ResponseUtil.write(gsonString,response);
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }



    }

七牛云提供了上传DEMO,可以很容易的整合到自己的项目中,学习成本低。


*荆轲刺秦王

本文永久链接地址:http://ilvc.me/blog/post/53
转载请注明出处:iLvc 开源 博客系统 ---- SpringMVC 文件上传以及整合七牛云
分享到:
评论

相关推荐

    springmvc实现上传文件到七牛云

    在本项目中,我们利用 SpringMVC 实现了文件上传的功能,并将这些文件存储到七牛云存储服务上。 首先,我们需要了解 SpringMVC 中的文件上传机制。在 SpringMVC 中,文件上传是通过 `CommonsMultipartResolver` ...

    SpringMVC文件上传,多文件上传实例

    在这个“SpringMVC文件上传,多文件上传实例”中,我们将深入探讨如何在SpringMVC环境中实现文件上传功能,包括单个文件上传以及多个文件的批量上传。 1. **文件上传原理**: 文件上传是通过HTTP协议的POST请求来...

    springMvc单文件多文件上传

    springMvc 文件上传,springMvc 支持单文件和多文件上传,

    Spring+SpringMVC+Mybatis框架整合例子(SSM) 下载

    Spring、SpringMVC和Mybatis是Java开发中最常用的三大开源框架,它们的整合使用,通常被称为SSM框架。这个框架组合提供了完整的后端服务解决方案,包括依赖注入(DI)、面向切面编程(AOP)、模型-视图-控制器(MVC...

    springMVC文件上传demo(亲测有效)

    总之,这个"springMVC文件上传demo"提供了一个完整的文件上传解决方案,包括前端表单、后端控制器、异常处理以及必要的配置。通过学习和实践这个Demo,开发者可以快速掌握SpringMVC环境下文件上传的实现方式。

    springMVC文件上传所需jar包

    在文件上传中,`org.apache.commons.io`包中的`FileUtils`, `IOUtils`, `FileInputStream`, `FileOutputStream`等类被广泛使用,帮助处理临时文件的创建、读写和删除,以及文件流的转换和复制。 **Apache Commons ...

    SpringMVC文件上传Demo代码

    在SpringMVC中实现文件上传是一项常见的任务,它允许用户通过表单将本地文件发送到服务器进行存储或处理。这个"SpringMVC文件上传Demo代码"是一个实例,演示了如何配置和使用SpringMVC来实现这一功能。 首先,我们...

    springmvc文件上传所需jar包

    com.springsource.org.apache.commons.fileupload-1.2.0.jar com.springsource.org.apache.commons.io-1.4.0.jar

    IDEA SpringMVC 实现文件的上传下载

    在SpringMVC框架中,实现文件的上传与下载是常见的需求。IntelliJ IDEA作为流行的Java开发集成环境,为开发者提供了高效便捷的开发体验。在这个项目中,我们使用IDEA来构建一个基于SpringMVC的系统,实现了文件的...

    Spring+SpringMVC+Mybatis框架整合源码

    标题中的“Spring+SpringMVC+Mybatis框架整合源码”指的是一个基于Java的Web开发项目,它结合了三个主流的开源框架:Spring、SpringMVC和Mybatis,以实现高效且灵活的企业级应用开发。这三种框架在Java世界中扮演着...

    SSM整合包 spring+springMVC+Mybatis+bootstarp以及文件上传与下载

    在这个整合包中,我们还将探讨如何结合Bootstrap来实现前端界面的快速开发,并学习文件上传与下载的功能。 1. **Spring框架**:Spring是Java企业级应用的核心框架,它提供了依赖注入(DI)和面向切面编程(AOP)等...

    JavaEE企业级开发-----SpringMVC实现 文件的上传下载实验报告.docx

    在JavaEE企业级开发中,SpringMVC框架是广泛用于构建Web应用程序的工具,它提供了丰富的功能,包括处理文件上传和下载。本实验报告将详细阐述如何利用SpringMVC实现文件上传与下载的功能。 首先,文件上传的核心...

    SpringMVC文件上传案例

    在SpringMVC框架中,文件上传是一个常见的功能,它允许用户通过Web应用程序上传文件到服务器。这个"SpringMVC文件上传案例"展示了如何在Eclipse开发环境中实现这一过程。下面我们将详细探讨涉及的知识点。 首先,...

    尚硅谷SpringMVC上传文件

    在使用springMVC进行系统实现时,springMVC默认的解析器里面是没有加入对文件上传的解析的,这可以方便我们实现自己的文件上传。但如果你想使用springMVC对文件上传的解析器来处理文件上传的时候就需要在spring的...

    springMVC 上传文件方式

    springMVC 上传文件方式springMVC 上传文件方式springMVC 上传文件方式

    SpringMVC文件上传和下载的工具类(完整项目)

    本文主要目的是记录自己基于SpringMVC实现的文件上传和下载的工具类的编写,代码经过测试可以直接运行在以后的项目中。开发的主要思路是对上传和下载文件进行抽象,把上传和下载的核心功能抽取出来分装成类。

    Spring+SpringMVC+Mybatis框架整合例子——亲测可用.zip

    SSM框架整合是Java开发中常见的技术栈,包括Spring、SpringMVC和Mybatis三个核心组件。这个压缩包提供了一个已经验证过的整合示例,帮助开发者理解和实践这三大框架的协同工作。 首先,Spring框架是Java企业级应用...

    基于springmvc实现文件上传下载 基于AOP的日志功能

    基于springmvc实现文件上传下载 基于AOP的日志功能基于springmvc实现文件上传下载 基于AOP的日志功能基于springmvc实现文件上传下载 基于AOP的日志功能基于springmvc实现文件上传下载 基于AOP的日志功能基于...

    SpringMVC+Mybatis的整合

    总的来说,SpringMVC+Mybatis的整合是Java Web开发中常见的一种架构模式,它结合了Spring的优秀控制反转和依赖注入特性,以及Mybatis对数据库操作的高度定制性,为开发者带来了高效、可扩展的开发体验。

    spring+springMVC+Mybatis框架整合

    在进行SSM整合时,需要引入相应的库文件,包括Spring的核心库、SpringMVC的库以及Mybatis的库。虽然有些jar包可能在当前项目中并未直接使用,但它们可能是其他依赖所必需的,因此通常会一并引入,以确保项目的正常...

Global site tag (gtag.js) - Google Analytics