Jsp页面实现文件上传.docx

上传人:b****6 文档编号:6818729 上传时间:2023-01-10 格式:DOCX 页数:9 大小:20.96KB
下载 相关 举报
Jsp页面实现文件上传.docx_第1页
第1页 / 共9页
Jsp页面实现文件上传.docx_第2页
第2页 / 共9页
Jsp页面实现文件上传.docx_第3页
第3页 / 共9页
Jsp页面实现文件上传.docx_第4页
第4页 / 共9页
Jsp页面实现文件上传.docx_第5页
第5页 / 共9页
点击查看更多>>
下载资源
资源描述

Jsp页面实现文件上传.docx

《Jsp页面实现文件上传.docx》由会员分享,可在线阅读,更多相关《Jsp页面实现文件上传.docx(9页珍藏版)》请在冰豆网上搜索。

Jsp页面实现文件上传.docx

Jsp页面实现文件上传

Jsp页面实现文件上传下载

作者:

SinNeR 时间:

2008-01-03 文档类型:

原创 来自:

蓝色理想

第1页jsp页面实现文件上传

第2页jsp页面实现文件下载

本来在介绍用TOMCAT作简单的jspweb开发的帖子中已经提过,但是有些筒子不喜欢看又臭又硬的文字,所以可能不会注意到,就重新开帖发出来。

请其他管理见谅。

顺便打算今后多写几个util函数,能用上的就用下。

代码开发的过程见用TOMCAT作简单的jspweb开发

刚才和lp看完电影,把jsp页面抽出class调整了一下。

最近总上经典,是感觉既然当了斑竹,就该留下点什么。

lp这几天也半开玩笑半生气的说,一回来就上经典,就发帖,你干脆娶经典作lp得了。

想想,这几天是有点夸张,以后放慢速度了。

保持1星期1帖吧,那样也能多想写,多总结些。

发帖的初衷就是有时候看到有的朋友问的问题,似乎还没有走进java的门,希望这样的帖子,能对新手一点帮助,也就满足了。

有时候随意的一段话,其实也是自己的一点经验,而有时候之所以絮絮叨叨,是想把问题说的清楚明白,让高手见笑了。

因为在入门的时候,每一个小环节都可能郁闷半天,如果看到我的某段话,有所帮助的话,即使我说十句有一句有帮助,我也满足了。

因为我在不停的说话。

现在把总结的jsp页面上传类发布出来。

代码肯定还会存在问题,有bug的话,告诉我,我及时修正。

名称:

jsp页面上传类

作者:

SinNeR

Mail:

vogoals[at]

特点:

1.可以多文件上传;

2.返回上传后的文件名;

3.form表单中的其他参数也可以得到。

先贴上传类,JspFileUpload

packagecom.vogoal.util;

importjava.io.BufferedOutputStream;

importjava.io.File;

importjava.io.FileOutputStream;

importjava.io.IOException;

importjava.text.SimpleDateFormat;

importjava.util.ArrayList;

importjava.util.Date;

importjava.util.Hashtable;

importjavax.servlet.ServletInputStream;

importjavax.servlet.http.HttpServletRequest;

/*

*vogoalAPI1.0

*AutherSinNeR@

*by

*mail:

vogoals@

*/

/**

*JSP上传文件类

*

*@authorSinNeR

*@version1.0

*/

publicclassJspFileUpload{

    /**request对象*/

    privateHttpServletRequestrequest=null;

    /**上传文件的路径*/

    privateStringuploadPath=null;

    /**每次读取得字节的大小*/

    privatestaticintBUFSIZE=1024*8;

    /**存储参数的Hashtable*/

    privateHashtableparamHt=newHasptable();

    /**存储上传的文件的文件名的ArrayList*/

    privateArrayListupdFileArr=newArrayList();

    /**

    *设定request对象。

    *

    *@paramrequest

    *        HttpServletRequestrequest对象

    */

    publicvoidsetRequest(HttpServletRequestrequest){

        this.request=request;

    }

    /**

    *设定文件上传路径。

    *

    *@parampath

    *        用户指定的文件的上传路径。

    */

    publicvoidsetUploadPath(Stringpath){

        this.uploadPath=path;

    }

    /**

    *文件上传处理主程序。

�������B

    *

    *@returnint操作结果0文件操作成功;1request对象不存在。

2没有设定文件保存路径或者文件保存路径不正确;3

    *      没有设定正确的enctype;4文件操作异常。

    */

    publicintprocess(){

        intstatus=0;

        //文件上传前,对request对象,上传路径以及enctype进行check。

        status=preCheck();

        //出错的时候返回错误代码。

        if(status!

=0)

            returnstatus;

        try{

            //��参数或者文件名�u��

            Stringname=null;

            //参数的value

            Stringvalue=null;

            //读取的流是否为文件的标志位

            booleanfileFlag=false;

            //要存储的文件。

            FiletmpFile=null;

            //上传的文件的名字

            StringfName=null;

            FileOutputStreambaos=null;

            BufferedOutputStreambos=null;

            //��存储参数的Hashtable

            paramHt=newHashtable();

            updFileArr=newArrayList();

            intrtnPos=0;

            byte[]buffs=newbyte[BUFSIZE*8];

            //�取得ContentType

            StringcontentType=request.getContentType();

            intindex=contentType.indexOf("boundary=");

            Stringboundary="--"+contentType.substring(index+9);

            StringendBoundary=boundary+"--";

            //�从request对象中取得流。

            ServletInputStreamsis=request.getInputStream();

            //读取1行

            while((rtnPos=sis.readLine(buffs,0,buffs.length))!

=-1){

                StringstrBuff=newString(buffs,0,rtnPos);

                //读取1行数据�n��

                if(strBuff.startsWith(boundary)){

                    if(name!

=null&&name.trim().length()>0){

                        if(fileFlag){

                            bos.flush();

                            baos.close();

                            bos.close();

                            baos=null;

                            bos=null;

                            updFileArr.add(fName);

                        }else{

                            Objectobj=paramHt.get(name);

                            ArrayListal=newArrayList();

                            if(obj!

=null){

                                al=(ArrayList)obj;

                            }

                            al.add(value);

                            System.out.println(value);

                            paramHt.put(name,al);

                        }

                    }

                    name=newString();

                    value=newString();

                    fileFlag=false;

                    fName=newString();

                    rtnPos=sis.readLine(buffs,0,buffs.length);

                    if(rtnPos!

=-1){

                        strBuff=newString(buffs,0,rtnPos);

                        if(strBuff.toLowerCase().startsWith(

                                "content-disposition:

form-data;")){

                            intnIndex=strBuff.toLowerCase().indexOf(

                                    "name=\"");

                            intnLastIndex=strBuff.toLowerCase().indexOf(

                                    "\"",nIndex+6);

                            name=strBuff.substring(nIndex+6,nLastIndex);

                        }

                        intfIndex=strBuff.toLowerCase().indexOf(

                                "filename=\"");

                        if(fIndex!

=-1){

                            fileFlag=true;

                            intfLastIndex=strBuff.toLowerCase().indexOf(

                                    "\"",fIndex+10);

                            fName=strBuff.substring(fIndex+10,fLastIndex);

                            fName=getFileName(fName);

                            if(fName==null||fName.trim().length()==0){

                                fileFlag=false;

                                sis.readLine(buffs,0,buffs.length);

                                sis.readLine(buffs,0,buffs.length);

                                sis.readLine(buffs,0,buffs.length);

                                continue;

                            }else{

                                fName=getFileNameByTime(fName);

                                sis.readLine(buffs,0,buffs.length);

                                sis.readLine(buffs,0,buffs.length);

                            }

                        }

                    }

                }elseif(strBuff.startsWith(endBoundary)){

                    if(name!

=null&&name.trim().length()>0){

                        if(fileFlag){

                            bos.flush();

                            baos.close();

                            bos.close();

                            baos=null;

                            bos=null;

                            updFileArr.add(fName);

                        }else{

                            Objectobj=paramHt.get(name);

                            ArrayListal=newArrayList();

                            if(obj!

=null){

                                al=(ArrayList)obj;

                            }

                            al.add(value);

                            paramHt.put(name,al);

                        }

                    }

                }else{

                    if(fileFlag){

                        if(baos==null&&bos==null){

                            tmpFile=newFile(uploadPath+fName);

                            baos=newFileOutputStream(tmpFile);

                            bos=newBufferedOutputStream(baos);

                        }

                        bos.write(buffs,0,rtnPos);

                        baos.flush();

                    }else{

                        System.out.println("test:

"+value+"--"+strBuff);

                        value=value+strBuff;

                    }

                }

            }

        }catch(IOExceptione){

            status=4;

        }

        returnstatus;

    }

    privateintpreCheck(){

        interrCode=0;

        if(request==null)

            return1;

        if(uploadPath==null||uploadPath.trim().length()==0)

            return2;

        else{

            FiletmpF=newFile(uploadPath);

            if(!

tmpF.exists())

                return2;

        }

        StringcontentType=request.getContentType();

        if(contentType.indexOf("multipart/form-data")==-1)

            return3;

        returnerrCode;

    }

    publicStringgetParameter(Stringname){

        Stringvalue="";

        if(name==null||name.trim().length()==0)

            returnvalue;

        value=(paramHt.get(name)==null)?

"":

(String)((ArrayList)paramHt.get(name)).get(0);

        returnvalue;

    }

    publicString[]getParameters(Stringname){

        if(name==null||name.trim().length()==0)

            returnnull;

        if(paramHt.get(name)==null)

            returnnull;

        ArrayListal=(ArrayList)paramHt.get(name);

        String[]strArr=newString[al.size()];

        for(inti=0;i

            strArr[i]=(String)al.get(i);

        returnstrArr;

    }

    

    publicintgetUpdFileSize(){

        returnupdFileArr.size();

    }

    

    publicString[]getUpdFileNames(){

        String[]strArr=newString[updFileArr.size()];

        for(inti=0;i

            strArr[i]=(String)updFileArr.get(i);

        returnstrArr;

    }

    privateStringgetFileName(Stringinput){

        intfIndex=input.lastIndexOf("\\");

        if(fIndex

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

当前位置:首页 > 幼儿教育 > 幼儿读物

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

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