zoukankan      html  css  js  c++  java
  • SpringMVC 文件上传(Multipart)

    作者QQ:1095737364    QQ群:123300273     欢迎加入!

        

      平时用的上传一般是输入流和输出流上传,今天使用的是transferTo方法:

        Multipart请求是在控制器实例中实现一个Multipart HttpServletRequest接口的request对象,MultipartHttpServletRequest接口简单地扩展了默认的HttpServletRequest接口,并提供一些用来处理请求文件的方法。

               transferTo方法实现文件是通过复制文件来实现,下面是一些Multipart的一些方法:

        • getSize():获得文件长度,以此决定允许上传的文件大小。
        • isEmpty():判断上传文件是否为空文件,以此决定是否拒绝空文件。
        • getInputStream():将文件读取为java.io.InputStream流对象。
        • getContentType():获得文件类型,以此决定允许上传的文件类型。
        • transferTo(dest):将上传文件写到服务器上指定的文件。

       

     下面是具体的示例:  

    引入jar包

    <dependency>
        <groupId>commons-fileupload</groupId>
        <artifactId>commons-fileupload</artifactId>
        <version>1.3.1</version>
    </dependency>

    SpringMVC 下加入以下代码

    <!-- 需要文件上传功能时,启用以下配置 -->
    <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
        <property name="maxInMemorySize">
            <value>1638400</value>
        </property>
    </bean>

    jsp前端:

    <input name="upgradeFile" type="file">

    Java后台:

    @RequestMapping(value = "/upgrade", method = RequestMethod.POST)
        public ModelAndView versionUpgrade(@RequestParam(value="upgradeFile",required=false) MultipartFile file, HttpServletRequest request, HttpServletResponse response) throws Exception {
            //保存上传
            String contextpath=request.getContextPath();
            String webappPath=request.getSession().getServletContext().getRealPath("/");
            OutputStream out = null;
            InputStream fileInput=null;
            try{
                if(file!=null){
                    String originalName=file.getOriginalFilename();
                    String type=file.getContentType();
                    String filepath=request.getServletContext().getRealPath("/")+uploadDir+"/"+originalName;         
                    filepath= Utils.format(filepath);
                    File files=new File(filepath);
                   //打印查看上传路径
                    System.out.println(filepath);
                    if(!files.getParentFile().exists()){
                        files.getParentFile().mkdirs();
                    }
                    file.transferTo(files);
                }
            }catch (Exception e){
            }finally{
                try {
                    if(out!=null){
                        out.close();
                    }
                    if(fileInput!=null){
                        fileInput.close();
                    }
                } catch (IOException e) {
                }
            }
    
    
  • 相关阅读:
    java 语言里 遍历 collection 的方式
    struts2启动报错com/opensymphony/xwork2/spring/SpringObjectFactory.java:220:-1
    mysql 查看表的类型
    memcached—向memcached中保存Java实体需注意的问题
    一个关于 UIPickerView 的 bug
    Wireshark数据抓包教程之安装Wireshark
    Mysql第四天 数据库设计
    产品经理怎样才干把一件事做出色
    Tokyo Tyrant(TTServer)系列(三)-Memcache协议
    Unity3D
  • 原文地址:https://www.cnblogs.com/yysbolg/p/6544154.html
Copyright © 2011-2022 走看看