ImageVerifierCode 换一换
格式:DOCX , 页数:17 ,大小:23.87KB ,
资源ID:4343437      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/4343437.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(Jsp页面实现文件上传下载.docx)为本站会员(b****4)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

Jsp页面实现文件上传下载.docx

1、Jsp页面实现文件上传下载Jsp页面实现文件上传下载 第 1 页 jsp页面实现文件上传代码开发的过程见 用TOMCAT作简单的jsp web开发名称:jsp页面上传类作者:SinNeRMail:vogoalsat特点:1 可以多文件上传;2 返回上传后的文件名;3 form表单中的其他参数也可以得到。先贴上传类,JspFileUploadpackage com.vogoal.util;import java.io.BufferedOutputStream;import java.io.File;import java.io.FileOutputStream;import java.io.IO

2、Exception;import java.text.SimpleDateFormat;import java.util.ArrayList;import java.util.Date;import java.util.Hashtable;import javax.servlet.ServletInputStream;import javax.servlet.http.HttpServletRequest;/* vogoalAPI 1.0* Auther SinNeR* by * mail: vogoals*/* JSP上传文件类* author SinNeR* version 1.0*/pu

3、blic class JspFileUpload /* request对象 */ private HttpServletRequest request = null; /* 上传文件的路径 */ private String uploadPath = null; /* 每次读取得字节的大小 */ private static int BUFSIZE = 1024 * 8; /* 存储参数的Hashtable */ private Hashtable paramHt = new Hasptable(); /* 存储上传的文件的文件名的ArrayList */ private ArrayList

4、updFileArr = new ArrayList(); /* * 设定request对象。 * * param request * HttpServletRequest request对象 */ public void setRequest(HttpServletRequest request) this.request = request; /* * 设定文件上传路径。 * * param path * 用户指定的文件的上传路径。 */ public void setUploadPath(String path) this.uploadPath = path; /* * 文件上传处理主程

5、序。�������B * * return int 操作结果 0 文件操作成功;1 request对象不存在。 2 没有设定文件保存路径或者文件保存路径不正确;3 * 没有设定正确的enctype;4 文件操作异常。 */ public int process() int status = 0; / 文件上传前,对request对象,上传路径以及enctype进行check。 status = preCheck(); / 出错的时候返回错误代码。 if (status != 0) return s

6、tatus; try / ��参数或者文件名�u�� String name = null; / 参数的value String value = null; / 读取的流是否为文件的标志位 boolean fileFlag = false; / 要存储的文件。 File tmpFile = null; / 上传的文件的名字 String fName = null; FileOutputStream baos = null; BufferedOutputStream bos = null; / ��

7、存储参数的Hashtable paramHt = new Hashtable(); updFileArr = new ArrayList(); int rtnPos = 0; byte buffs = new byteBUFSIZE * 8; / �取得ContentType String contentType = request.getContentType(); int index = contentType.indexOf(boundary=); String boundary = - + contentType.substring(index + 9); String

8、endBoundary = boundary + -; / �从request对象中取得流。 ServletInputStream sis = request.getInputStream(); / 读取1行 while (rtnPos = sis.readLine(buffs, 0, buffs.length) != -1) String strBuff = new String(buffs, 0, rtnPos); / 读取1行数据�n�� if (strBuff.startsWith(boundary) if (name != nu

9、ll & name.trim().length() 0) if (fileFlag) bos.flush(); baos.close(); bos.close(); baos = null; bos = null; updFileArr.add(fName); else Object obj = paramHt.get(name); ArrayList al = new ArrayList(); if (obj != null) al = (ArrayList) obj; al.add(value); System.out.println(value); paramHt.put(name, a

10、l); name = new String(); value = new String(); fileFlag = false; fName = new String(); rtnPos = sis.readLine(buffs, 0, buffs.length); if (rtnPos != -1) strBuff = new String(buffs, 0, rtnPos); if (strBuff.toLowerCase().startsWith( content-disposition: form-data; ) int nIndex = strBuff.toLowerCase().i

11、ndexOf( name=); int nLastIndex = strBuff.toLowerCase().indexOf( , nIndex + 6); name = strBuff.substring(nIndex + 6, nLastIndex); int fIndex = strBuff.toLowerCase().indexOf( filename=); if (fIndex != -1) fileFlag = true; int fLastIndex = strBuff.toLowerCase().indexOf( , fIndex + 10); fName = strBuff.

12、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.readL

13、ine(buffs, 0, buffs.length); sis.readLine(buffs, 0, buffs.length); else if (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 Object obj = paramHt.get(name); ArrayList

14、al = new ArrayList(); if (obj != null) al = (ArrayList) obj; al.add(value); paramHt.put(name, al); else if (fileFlag) if (baos = null & bos = null) tmpFile = new File(uploadPath + fName); baos = new FileOutputStream(tmpFile); bos = new BufferedOutputStream(baos); bos.write(buffs, 0, rtnPos); baos.fl

15、ush(); else System.out.println(test : + value + - + strBuff); value = value + strBuff; catch (IOException e) status = 4; return status; private int preCheck() int errCode = 0; if ( request = null ) return 1; if ( uploadPath = null | uploadPath.trim().length() = 0 ) return 2; else File tmpF = new Fil

16、e(uploadPath); if (!tmpF.exists() return 2; String contentType = request.getContentType(); if ( contentType.indexOf(multipart/form-data) = -1 ) return 3; return errCode; public String getParameter(String name) String value = ; if ( name = null | name.trim().length() = 0 ) return value; value = (para

17、mHt.get(name) = null)?:(String)(ArrayList)paramHt.get(name).get(0); return value; public String getParameters(String name) if ( name = null | name.trim().length() = 0 ) return null; if ( paramHt.get(name) = null ) return null; ArrayList al = (ArrayList)paramHt.get(name); String strArr = new Stringal

18、.size(); for ( int i=0;ial.size();i+ ) strArri = (String)al.get(i); return strArr; public int getUpdFileSize() return updFileArr.size(); public String getUpdFileNames() String strArr = new StringupdFileArr.size(); for ( int i=0;iupdFileArr.size();i+ ) strArri = (String)updFileArr.get(i); return strA

19、rr; private String getFileName(String input) int fIndex = input.lastIndexOf(); if (fIndex = -1) fIndex = input.lastIndexOf(/); if (fIndex = -1) return input; input = input.substring(fIndex + 1); return input; private String getFileNameByTime(String input) int index = input.indexOf(.); Date dt = new

20、Date(); SimpleDateFormat sdf = new SimpleDateFormat(yyyyMMddHHmmssSSS); return input.substring(0,index) + sdf.format(dt) + input.substring(index); 说明:这个类基本解决了上一贴的上一贴说的存在的bug和不足。主要做了如下修正。4 用户可以设定文件上传的路径,这里没有用request对象的getRealPath方法来取得相对路径,而是用了绝对路径。是一个小败笔。因为有时候用户只是得到服务器的一个应用,而不知道整个服务器的路径。但是既然getRealPa

21、th自己可以得到,用户自己取得也可以。5 在文件上传处理的时候,预先进行了check,把一些可能出现的造成上传失败的情况拍查掉。避免该类出现不该出现的异常。6 捕获了IO异常,避免文件上传的时候出现异常时程序的不友好表现7 提供了方法返回form表单中其他参数的取得,模拟了HttpServletRequest对象的getParameter和getParameters方法(后面这个方法是叫这个名字么-_-b),取得Parameter的名称的方法没有提供,是个小缺陷。8 提供了方法返回上传的文件的件数和上传的文件名,方便用户作其他操作。现在介绍下JSP页面中如何用这个类实现上传。首先,要把这个类编

22、译后的class文件拷贝到WEB-INF/classes/目录下。注意保持package的结构。在jsp页面中引用这个类 0) / out.println(fileArr 0: + fileArr0);%使用的时候的注意事项:9 一定要设定request对象。10 一定要设定正确的上传路径。11 执行完了之后才可以得到其他参数,因为执行了之后这些参数才被分析。1,2两点如果没有做到的话,process方法执行的时候汇报错。各个用户可用的方法及说明:设定requet对象。public void setRequest(HttpServletRequest request)设定文件上传的路径。pub

23、lic void setUploadPath(String path)文件上传处理主程序。return int 操作结果 0 文件操作成功;1 request对象不存在。 2 没有设定文件保存路径或者文件保存路径不正确;3 没有设定正确的enctype;4 文件操作异常。public int process()根据name取得form表单中其他传递的参数的值(多个的话返回其中一个)public String getParameter(String name)根据name取得form表单中其他传递的参数的值(返回数组,可有多个)public String getParameters(String

24、 name)取得上传成功文件的个数public int getUpdFileSize()取得上传的文件名对应的数组。public String getUpdFileNames()注意process方法地返回值,在不是0的情况下操作失败。以下提供测试类以及测试页面(见附件):HelloPostFile.htmlHelloPostFile.jsp写在jsp中的代码的测试文件。HelloPostFileWithClass.htmlHelloPostFileWithClass.jsp抽出class后的测试文件。src在WEB-INF/src/class在WEB-INF/classes/另:由于这个文件

25、被我在中文日文系统下编辑过,注释出现乱码,所以大部分都删掉了,见谅。原码:jspUpload 第 2 页 jsp页面实现文件下载JSP文件下载类整理完成。可以在JSP页面中实现简单的下载,支持文件打包下载功能。支持将字符串或者流生成文件提供下载的功能。但是也有一些缺点。现把这个类的基本介绍总结如下。名称:jsp页面下载类作者:SinNeRMail:vogoalsat特点及功能介绍:1 支持单文件下载。支持多文件zip压缩下载。多文件zip压缩可在服务器保留或者删除副本。支持将特定的字符串或者byte数组以指定的文件名提供下载。2 在下载过程中需要提供response对象。并且选择下载形式。3

26、下载处理前先进行check,避免出现错误。4 下载处理过程中出错时,会报告错误信息。5 日文系统下文件名是中文时出现乱码问题。6 处理前需要进行相对繁琐的设定。现介绍下使用者可见的方法的功能。设定实现下载必须的response对象。public void setResponse(HttpServletResponse response)设定下载方式:0 为普通单文件下载。 1 为多文件压缩成zip包下载。 2 为将指定的字符串等拼接成文件内容提供给用户下载。public void setDownType(int fileType)设定下载时显示给用的文件名。public void setDis

27、FileName(String fileName) 压缩文件下载时,设定压缩文件暂时保存的路径(路径为绝对路径)public void setZipFilePath( String path ) 压缩文件下载时,设定服务器端生成的压缩文件是否删除。True 删除;false 保留。public void setZipDelFlag(boolean b) 压缩文件下载时,设定要压缩的文件的文件路径(路径为绝对路径)public void setZipFileNames(String fileNames)单文件下载时,设定下载文件的路径(绝对路径)public void setDownFileName(String fileName) 将字符串生成文件内容模拟下载时,设定文件的内容。参数为字符串(可多次调用)public int setFileContent(String fileContent)将字符串生成文件内容模拟下载时,设定文件的内容。参数为byte数组(可多次调用)返回

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

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