springmvc文件上传与下载.docx

上传人:b****6 文档编号:4932687 上传时间:2022-12-11 格式:DOCX 页数:15 大小:34.97KB
下载 相关 举报
springmvc文件上传与下载.docx_第1页
第1页 / 共15页
springmvc文件上传与下载.docx_第2页
第2页 / 共15页
springmvc文件上传与下载.docx_第3页
第3页 / 共15页
springmvc文件上传与下载.docx_第4页
第4页 / 共15页
springmvc文件上传与下载.docx_第5页
第5页 / 共15页
点击查看更多>>
下载资源
资源描述

springmvc文件上传与下载.docx

《springmvc文件上传与下载.docx》由会员分享,可在线阅读,更多相关《springmvc文件上传与下载.docx(15页珍藏版)》请在冰豆网上搜索。

springmvc文件上传与下载.docx

springmvc文件上传与下载

上传样式,中文文件名,文件名重复处理

1. [代码]action    

packagecom.action;

 

importjava.io.File;

importjava.io.IOException;

importjava.util.HashMap;

importjava.util.Map;

 

importjavax.servlet.http.HttpServletRequest;

importjavax.servlet.http.HttpServletResponse;

 

importorg.springframework.stereotype.Controller;

importorg.springframework.web.bind.annotation.RequestMapping;

importorg.springframework.web.servlet.ModelAndView;

 

importcom.util.FileOperateUtil;

 

@Controller

@RequestMapping(value="fileOperate")

publicclassFileOperateAction{

    @RequestMapping(value="upload")

    publicStringupload(HttpServletRequestrequest){

        init(request);

        try{

            FileOperateUtil.upload(request);

            request.setAttribute("msg","ok");

            request.setAttribute("map",getMap());

        }catch(Exceptione){

            e.printStackTrace();

        }

        return"redirect:

list";

    }

    @RequestMapping(value="list")

    publicModelAndViewlist(HttpServletRequestrequest){      

        init(request);

        request.setAttribute("map",getMap());

        returnnewModelAndView("fileOperate/list");

    }

    @RequestMapping(value="download")

    publicvoiddownload(HttpServletRequestrequest,HttpServletResponseresponse){

        init(request);

        try{

            StringdownloadfFileName=request.getParameter("filename");

            downloadfFileName=newString(downloadfFileName.getBytes("iso-8859-1"),"utf-8");

            StringfileName=downloadfFileName.substring(downloadfFileName.indexOf("_")+1);

            StringuserAgent=request.getHeader("User-Agent");

            byte[]bytes=userAgent.contains("MSIE")?

fileName.getBytes():

fileName.getBytes("UTF-8");

            fileName=newString(bytes,"ISO-8859-1");

            response.setHeader("Content-disposition",String.format("attachment;filename=\"%s\"",fileName));

            FileOperateUtil.download(downloadfFileName,response.getOutputStream());

        }catch(IOExceptione){

            e.printStackTrace();

        }

    }

    privatevoidinit(HttpServletRequestrequest){

        if(FileOperateUtil.FILEDIR==null){

            FileOperateUtil.FILEDIR=request.getSession().getServletContext().getRealPath("/")+"file/";

        }

    }

    privateMapgetMap(){

        Mapmap=newHashMap();

        File[]files=newFile(FileOperateUtil.FILEDIR).listFiles();

        if(files!

=null){

            for(Filefile:

files){

                if(file.isDirectory()){

                    File[]files2=file.listFiles();

                    if(files2!

=null){

                        for(Filefile2:

files2){

                            Stringname=file2.getName();

                            map.put(file2.getParentFile().getName()+"/"+name,name.substring(name.lastIndexOf("_")+1));

                        }

                    }

                }

            }

        }

        returnmap;

    }  

}

2. [代码]util    

packagecom.util;

 

importjava.io.File;

importjava.io.FileInputStream;

importjava.io.FileNotFoundException;

importjava.io.FileOutputStream;

importjava.io.IOException;

importjava.io.InputStream;

importjava.io.OutputStream;

importjava.util.Date;

importjava.util.Iterator;

importjava.util.Map;

 

importjavax.servlet.ServletOutputStream;

importjavax.servlet.http.HttpServletRequest;

 

importorg.springframework.web.multipart.MultipartFile;

importorg.springframework.web.multipart.MultipartHttpServletRequest;

 

publicclassFileOperateUtil{

    publicstaticStringFILEDIR=null;

    /**

     *上传

     *@paramrequest

     *@throwsIOException

     */

    publicstaticvoidupload(HttpServletRequestrequest)throwsIOException{      

        MultipartHttpServletRequestmRequest=(MultipartHttpServletRequest)request;

        MapfileMap=mRequest.getFileMap();      

        Filefile=newFile(FILEDIR);

        if(!

file.exists()){

            file.mkdir();

        }

        Iterator>it=fileMap.entrySet().iterator();

        while(it.hasNext()){

            Map.Entryentry=it.next();

            MultipartFilemFile=entry.getValue();

            if(mFile.getSize()!

=0&&!

"".equals(mFile.getName())){

                write(mFile.getInputStream(),newFileOutputStream(initFilePath(mFile.getOriginalFilename())));

            }

        }

    }

    privatestaticStringinitFilePath(Stringname){

        Stringdir=getFileDir(name)+"";

        Filefile=newFile(FILEDIR+dir);

        if(!

file.exists()){

            file.mkdir();

        }

        Longnum=newDate().getTime();

        Doubled=Math.random()*num;

        return(file.getPath()+"/"+num+d.longValue()+"_"+name).replaceAll("","-");

    }

    privatestaticintgetFileDir(Stringname){

        returnname.hashCode()&0xf;

    }

    publicstaticvoiddownload(StringdownloadfFileName,ServletOutputStreamout){

        try{

            FileInputStreamin=newFileInputStream(newFile(FILEDIR+"/"+downloadfFileName));

            write(in,out);

        }catch(FileNotFoundExceptione){

            try{

                FileInputStreamin=newFileInputStream(newFile(FILEDIR+"/"

                        +newString(downloadfFileName.getBytes("iso-8859-1"),"utf-8")));

                write(in,out);

            }catch(IOExceptione1){             

                e1.printStackTrace();

            }

        }catch(IOExceptione){

            e.printStackTrace();

        }      

    }

    /**

     *写入数据

     *@paramin

     *@paramout

     *@throwsIOException

     */

    publicstaticvoidwrite(InputStreamin,OutputStreamout)throwsIOException{

        try{

            byte[]buffer=newbyte[1024];

            intbytesRead=-1;

            while((bytesRead=in.read(buffer))!

=-1){

                out.write(buffer,0,bytesRead);

            }

            out.flush();

        }finally{

            try{

                in.close();

            }

            catch(IOExceptionex){

            }

            try{

                out.close();

            }

            catch(IOExceptionex){

            }

        }

    }  

}

3. [代码]springmvc-context.xml  

xmlversion="1.0"encoding="UTF-8"?

>

//www.springframework.org/schema/beans"

    xmlns:

xsi="http:

//www.w3.org/2001/XMLSchema-instance"

    xmlns:

p="http:

//www.springframework.org/schema/p"

    xmlns:

mvc="http:

//www.springframework.org/schema/mvc"

    xmlns:

context="http:

//www.springframework.org/schema/context"

    xsi:

schemaLocation="

        http:

//www.springframework.org/schema/beans

        http:

//www.springframework.org/schema/beans/spring-beans.xsd

        http:

//www.springframework.org/schema/mvc

        http:

//www.springframework.org/schema/mvc/spring-mvc.xsd

        http:

//www.springframework.org/schema/context

        http:

//www.springframework.org/schema/context/spring-context.xsd">

    

component-scanbase-package="com.action"/>

    

annotation-driven/>

    

        

        

        

    

    

defaultEncoding="UTF-8"/>

4. [代码]list.jsp    

<%@pagelanguage="java"import="java.util.*"pageEncoding="UTF-8"contentType="text/html;charset=UTF-8" %>

<%@taglibprefix="c"uri="

<%

StringbasePath=request.getScheme()+":

//"+request.getServerName()+":

"+request.getServerPort()+request.getContextPath()+"/";

%>

DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.01Transitional//EN">

  

    list

    

    

    

        a:

link{

            text-decoration:

none;

        }

        a:

visited{

            text-decoration:

none;

        }

        a:

hover{

            color:

#999999;

            text-decoration:

underline;

        }

     

   

  

    

    

forEachitems="${map}"var="v">       

        fileOperate/download?

filename=${v.key}">${v.value}

    

forEach>

    
fileOperate/upload.jsp">上传文件

  

5. [代码]upload.jsp    

<%@pagelanguage="java"import="java.util.*"pageEncoding="UTF-8"%>

<%

StringbasePath=request.getScheme()+":

//"+request.getServerName()+":

"+request.getServerPort()+request.getContextPath()+"/";

%>

DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.01Transitional//EN">

upload

    .input{

        width:

80px;

        height:

20px;

        line-height:

20px;

        background:

#0088ff;

        text-align:

center;

        display:

inline-block;

        overflow:

hidden;

        position:

relative;

        text-decoration:

none;

        top:

5px;

    }

     

    .input:

hover{

        background:

#ff8800;

    }

     

    .file{

        opacity:

0;

        filter:

alpha(opacity=    0);

        font-size:

50px;

        position:

absolute;

        top:

0;

        right:

0;

    }

     

    a:

link{

        text-decoration:

none;

    }

    a:

visited{

        text-decoration:

none;

    }

    a:

hover{

        color:

#999999;

        

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 考试认证 > 其它考试

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1