常用JSP文件上传,下载的一些方法

传智播客---文件上传于文件下载 文件上传和下载技术 一。文件上传: 是指允许客户将本地文件,上传到服务器端 常见的应用:上传照片、上传新闻图片、上传附件 文件上传编程基本步骤:  1、在用户页面中添加上传输入项 (客户端页面操作)也就是编写一个jsp页面里面编写一个表单提交          注意事项:  1) 必须为文件上传input 提供name属性,否则文件上传内容不会被表单提交  2) 表单 阅读详情

文件上传在web应用中非常普遍,要在jsp环境中实现文件上传功能是非常容易的,因为网上有许多用java开发的文件上传组件,下面我介绍几种有关文件上传组件。
一. 基于org.apache.struts.upload.FormFile的文件上传。
这种方法相对比较简单。原理是在Actionform中定义一个FormFile类型的属性file,这个类型是struts所提供的包中的对象——“org.apache.struts.upload.FormFile”,并在jsp中加入html:file标签,当提交表单后,该标签会把用户所选择上传的文件的放入file中。
在action中加入如下语句进行上传:
public ActionForward execute(ActionMapping mapping,
             ActionForm form,
             HttpServletRequest request,
             HttpServletResponse response){
FileUploadActionForm upload=( FileUploadActionForm)form;
FormFile ff= upload.getFile();//取得上传的文件
String filesize=Integer.toString(ff.getFileSize())+"bytes";//获取文件大小
String dir=request.getRealPath("/upload");//上传到指定的upload包中
InputStream in=ff.getInputStream();//把文件读入
OutputStream out=new FileOutputStream(dir+"/"+ ff.getFileName()); //建立一个上传文件的输出流
out.write(); //将文件写入服务器
out.close();
in.close();
return mapping.findForward(SUCCESS);
}
剩下的就是配置struts-config.xml中的ActionForm与Action对应了,在这里我就不详说了。但是这种方法只限于在struts环境中使用,因此它的通用性并不强。
二. 基于commons-fileupload的文件上传
common-fileupload组件是apache的一个开源项目之一,可以从http://jakarta.apache.org/commons/fileupload/下载。用该组件可实现一次上传一个或多个文件,并可限制文件大小。
下面举一个例子:
新建一个servlet: upload.java用于文件上传:

public class upload extends httpservlet {

     private string uploadpath = "c:\\upload\\"; / 上传文件的目录
     private string temppath = "c:\\upload\\tmp\\"; / 临时文件目录

     public void dopost(httpservletrequest request,
     httpservletresponse response)
     throws ioexception, servletexception
     {
     }
}
在dopost()方法中,当servlet收到浏览器发出的post请求后,实现文件上传。以下是示例代码:
public void dopost(httpservletrequest request,
httpservletresponse response)
throws ioexception, servletexception
{
     try {
         diskfileupload fu = new diskfileupload();
         / /设置最大文件尺寸,这里是4mb
         fu.setsizemax(4194304);
         // 设置缓冲区大小,这里是4kb
         fu.setsizethreshold(4096);
         / /设置临时目录:
         fu.setrepositorypath(temppath);

         / /得到所有的文件:
         list fileitems = fu.parserequest(request);
         iterator i = fileitems.iterator();
         // 依次处理每一个文件:
         while(i.hasnext()) {
             fileitem fi = (fileitem)i.next();
             / /获得文件名,这个文件名包括路径:
             string filename = fi.getname();
             // 在这里可以记录用户和文件信息
             / /...
             / /写入文件,暂定文件名为a.txt,可以从filename中提取文件名:
             fi.write(new file(uploadpath + "a.txt"));
         }
     }
     catch(exception e) {
         / /可以跳转出错页面
     }
}
如果要在配置文件中读取指定的上传文件夹,可以在init()方法中执行:
public void init() throws servletexception {
     uploadpath = ....
     temppath = ....
     / /文件夹不存在就自动创建:
     if(!new file(uploadpath).isdirectory())
         new file(uploadpath).mkdirs();
     if(!new file(temppath).isdirectory())
         new file(temppath).mkdirs();
编译该servlet,注意要指定classpath,确保包含commons-upload-1.0.jar和tomcat\common\lib\servlet-api.jar。
配置servlet,用记事本打开tomcat\webapps\你的webapp\web-inf\web.xml,没有的话新建一个。
典型配置如下:
<@xml version="1.0" encoding="iso-8859-1"@>
<!doctype web-app
     public "-/sun microsystems, inc./dtd web application 2.3/en"
     "http://java.sun.com/dtd/web-app_2_3.dtd">

<web-app>
     <servlet>
         <servlet-name>upload</servlet-name>
         <servlet-class>upload</servlet-class>
     </servlet>

     <servlet-mapping>
         <servlet-name>upload</servlet-name>
         <url-pattern>/fileupload</url-pattern>
     </servlet-mapping>
</web-app>
配置好servlet后,启动tomcat,写一个简单的html测试:
<form action="fileupload" method="post"
enctype="multipart/form-data" name="form1">
   <input type="file" name="file">
   <input type="submit" name="submit" value="upload">
</form>
注意action="fileupload"其中fileupload是配置servlet时指定的url-pattern。
这种方法的通用性相对比较好,可应用于包括struts在内的各种编程技术。
三. 基于jspSmartUpload的文件上传.
jspSmartUpload是由www.jspsmart.com网站开发的一个可免费使用的全功能的文件上传下载组件,适于嵌入执行上传下载操作的JSP文件中。
利用jspSmartUpload组件提供的对象及其操作方法,可以获得全部上传文件的信息(包括文件名,大小,类型,扩展名,文件数据等),
方便存取。能对上传的文件在大小、类型等方面做出限制。如此可以滤掉不符合要求的文件。
下载灵活。仅写两行代码,就能把Web服务器变成文件服务器。不管文件在Web服务器的目录下或在其它任何目录下,都可以利用jspSmartUpload进行下载。
能将文件上传到数据库中,也能将数据库中的数据下载下来。这种功能针对的是MYSQL数据库.
对于上传文件的FORM表单,有两个要求:
  1、METHOD应用POST,即METHOD="POST"。
  2、增加属性:ENCTYPE="multipart/form-data"
  下面是一个用于上传文件的FORM表单的例子:
<FORM METHOD="POST" ENCTYPE="multipart/form-data"
ACTION="/jspSmartUpload/upload.jsp">
<INPUT TYPE="FILE" NAME="MYFILE">
<INPUT TYPE="SUBMIT">
</FORM>

执行文件上传操作
<%
// 新建一个SmartUpload对象
SmartUpload su = new SmartUpload();
// 上传初始化
su.initialize(pageContext);
// 设定上传限制
// 1.限制每个上传文件的最大长度。
// su.setMaxFileSize(10000);
// 2.限制总上传数据的长度。
// su.setTotalMaxFileSize(20000);
// 3.设定允许上传的文件(通过扩展名限制),仅允许doc,txt文件。
// su.setAllowedFilesList("doc,txt");
// 4.设定禁止上传的文件(通过扩展名限制),禁止上传带有exe,bat,
jsp,htm,html扩展名的文件和没有扩展名的文件。
// su.setDeniedFilesList("exe,bat,jsp,htm,html,,");
// 上传文件
su.upload();
// 将上传文件全部保存到指定目录
int count = su.save("/upload");
out.println(count+"个文件上传成功!<br>");
// 利用Request对象获取参数之值
out.println("TEST="+su.getRequest().getParameter("TEST")
+"<BR><BR>");
// 逐一提取上传文件信息,同时可保存文件。
for (int i=0;i<su.getFiles().getCount();i++)
{
com.jspsmart.upload.File file = su.getFiles().getFile(i);
// 若文件不存在则继续
if (file.isMissing()) continue;
// 显示当前文件信息
out.println("<TABLE BORDER=1>");
out.println("<TR><TD>表单项名(FieldName)</TD><TD>"
+ file.getFieldName() + "</TD></TR>");
out.println("<TR><TD>文件长度(Size)</TD><TD>" +
file.getSize() + "</TD></TR>");
out.println("<TR><TD>文件名(FileName)</TD><TD>"
+ file.getFileName() + "</TD></TR>");
out.println("<TR><TD>文件扩展名(FileExt)</TD><TD>"
+ file.getFileExt() + "</TD></TR>");
out.println("<TR><TD>文件全名(FilePathName)</TD><TD>"
+ file.getFilePathName() + "</TD></TR>");
out.println("</TABLE><BR>");
// 将文件另存
// file.saveAs("/upload/" + myFile.getFileName());
// 另存到以WEB应用程序的根目录为文件根目录的目录下
// file.saveAs("/upload/" + myFile.getFileName(),su.SAVE_VIRTUAL);
// 另存到操作系统的根目录为文件根目录的目录下
// file.saveAs("c:\\temp\\" + myFile.getFileName(),su.SAVE_PHYSICAL);
}
%>
用这种方法并不用配置任何文件。只需在html/jsp文件中加入如下类似代码即可执行,
<FORM METHOD="POST"ACTION="jsp/do_upload.jsp"ENCTYPE="multipart/form-data">
<input type="FILE" name="FILE1" size="30">
<input type="submit" name="Submit" value="上传它!">
</FORM>
总之这三种方法各有千秋,用时可按实际情况进行选择。

为了您的安全,请只打开来源可靠的网址

打开网站    取消

来自: http://hi.baidu.com/liuzhq/blog/item/5fdfe01bfd2aeffbaf51330a.html
jsp实现文件的上传与下载 主要讲解使用jspSmartupload组件在实现文件的上传与下载.欢迎学习交流,qq:634229897 立即下载

相关推荐

使用JSP实现上传下载文件jspSmartUpload

使用JSP实现上传下载文件jspSmartUpload 里面讲述怎么用jsp实现

JavaWebDay13

实现文件的上传与下载

m0_62761692的博客 264

jsp页面实现文件上传下载

利用jsp实现文件的上传和下载,真的很不错,不信你可以看一下

基于Java与JSP的文件上传和下载

当用户在前端页面点击文件上传后,用户上传的文件数据提交给服务器端,实现保存

小滕的Java学习旅途 1986

jsp实现文件上传下载功能

jsp实现文件上传下载功能

S4 Hana SD -信贷管理 - 03

自动信用控制将针对同一信用控制范围的不同的客户风险类别和信贷组执行不同的信用控制政策。对于ECC系统而言,无需单独设置检查规则,可在自动信贷控制进行设置即可,如图1-5-2。在S4 HANA版本中,自动信贷控制和检查规则是分离的。S4系统需要在定义自动信贷控制的时候,给字段“SAP信用管理”打钩,激活检查规则,然后需要单独在检查规则页签设置检查规则。接下来,我们分别介绍ECC和S4 HANA系统中两种不同配置方式.6.2SPRO。

weixin_46525734的博客 2888

jsp Web实现文件上传下载功能实例解析

但是在很多情况下,平台运营方并没有大文件上传和断点续传的开发经验,往往在网上找一些简单的PHP或者Java程序来实现基本的上传功能,然而在实际使用中会发现,这些基于脚本语言实现的上传功能模块性能很弱,一是不支持2GB以上的内容上传;二是无法支持断点续传;它支持4GB以上超大文件上传和断点续传,支持Windows和Linux服务器平台,支持任意格式的文件上传,尤其适合大的视频网站应用。随着视频网站和大数据应用的普及,特别是高清视频和4K视频应用的到来,超大文件上传已经成为了日常的基础应用需求。

Mr_Zang666的博客 305

保姆级QFIL线刷教程:从驱动安装到成功刷机的完整避坑指南(Win10/11实测)

本文提供了一份详细的QFIL线刷教程,涵盖从驱动安装到成功刷机的完整流程,特别针对Win10/11系统进行了实测。文章重点解决了EDL模式下的常见问题,如Download Fail和COM Port识别错误,并提供了实用的避坑技巧和故障排除方案,帮助用户实现零失误操作。

weixin_29245767的博客 763

jsp web中实现文件上传下载的三种解决方案(推荐)

4. 上传文件不能使用 request.getParameter("")获取参数了,而是直接将request解析,通过判断每一项是文件还是非文件,然后进行相应的操作(文件的话就是用流来读取,非文件的话,暂时保存到一个map中。, jsonp: "callback" //自定义的jsonp回调函数名称,默认为jQuery自动生成的随机函数名。this.ui.msg.text("MD5计算完毕,开始连接服务器...");this.ui.msg.text("服务器存在相同文件,快速上传成功。

Mr_Zang666的博客 1864

IsaacGym四足机器人sim to real全过程详细解析(walk these ways方法)

本文使用强化学习的方法运行到Aliengo机器人上完成从训练到部署的全过程。该方法使用的是GO1机器人提供了完整的sim to real代码和遥控器控制代码,所以我们只需要重新训练和部署健康就可以使用在Aliengo上。该方法使用lcm进行通讯首先程序通过UDP和机器人控制板进行通讯获取机器人状态并下达指令。然后又通过lcm进行机器人状态信息的发布和模型命令的获取。

weixin_44061195的博客 2万+

Docker容器化部署Ceph集群:从零搭建高可用分布式存储

本文详细介绍了如何使用Docker容器化部署Ceph集群,从零搭建高可用分布式存储系统。通过环境一致性、快速扩容和资源隔离等优势,Docker显著提升了Ceph集群的部署效率和运维便捷性。文章涵盖硬件规划、镜像选择、单节点部署、多节点扩展及性能调优等实战内容,帮助开发者快速掌握分布式存储系统的容器化部署技巧。

weixin_29081101的博客 422

(转)常用JSP文件上传,下载的一些方法

文件上传在web应用中非常普遍,要在jsp环境中实现文件上传功能是非常容易的,因为网上有许多用java开发的文件上传组件,下面我介绍几种有关文件上传组件。 [b]一. 基于org.apache.struts.upload.FormFile的文件上传。[/b]这种方法相对比较简单。原理是在Actionform中定义一个FormFile类型的属性file,这个类型是struts所提供的包中的对象...

小虫一两只 160

海康威视嵌入式最全面试题及参考答案(3万字长文)

主营业务:提供包括前端摄像头、后端存储设备、显示控制设备等在内的全方位视频监控解决方案。市场地位:在全球范围内享有较高的市场份额,在安防领域具有较强的竞争力。技术创新:持续投入研发,拥有多项核心技术和专利,特别是在视频处理算法、人工智能等方面取得了显著成果。社会责任:积极参与公共安全项目,为智慧城市、交通管理等领域提供技术支持和服务。国际业务:除了国内市场外,海康威视的产品和服务也销往全球多个国家和地区。面向对象编程。

大模型大数据攻城狮的专栏 1761

2021-08-12 Servlet文件上传下载,Cookie,JSP

Servlet文件的上传|下载 文件上传 在上传界面中:upload.jsp 在做文件上传的时候,会有一个上传文件的界面,首先我们需要一个表单,并且表单的请求方式为 POST;其次我们的 form 表单的 enctype 必须设为"multipart/form-data",即 enctype=“multipart/form-data”,意思是设置表单的类型为文件上传表单。默认情况下这个表单类 型是 “application/x-www-form-urlencoded”, 不能用于文件上传。只有使用了mult

faharciki的博客 153

【AutoSAR】【以太网】TCP/IP 栈详述与配置

目录 一、TCP/IP栈架构 二、TCP\IP栈的可扩展性 三、以太网协议V4 四、以太网协议 V6 五、基于IP的协议 六、函数调用序列图 一、TCP/IP栈架构 根据以上架构图,该栈主要包括:UPD\TCP\DHCP\ICMP\IPV4\IPV6\ARP; 二、TCP\IP栈的可扩展性 TCP\IP栈为适应不同的应用场景需求,将分为三类: 配置工程里的配置项: 三、以太网协议V4 1 IPV4 Internet Protocol (IP)是T.

专注汽车软件开发、AutoSAR、车载以太网、SOA、EE架构。 5695

基于Simulink的电机热阻模型建立与仿真

本文详细介绍了基于Simulink的电机热阻模型建立方法。通过将电机传热路径分解为5段关键热阻(绕组内部、槽绝缘、铁芯、机壳、冷却系统),采用Simscape Thermal模块构建热阻网络模型。重点阐述了参数化热阻计算、实验数据校准、不同设计方案对比等关键步骤,并以15kW车用PMSM为例演示建模过程。文章还分享了非线性热阻处理、多维网络构建等高级技巧,指出该模型在热设计迭代、散热匹配、故障诊断等方面的重要工程价值,为电机热安全设计提供了有效的数字化解决方案。

xiaoheshang_123的博客 335

JSP基本使用

本文是个人看视频总结,适合初学者 标记 含义 说明性的标记 通常会放在文件的顶部 包含普通的Java代码,_jspService方法外部 包含普通的Java代码, _jspService方法内部 包含普通的Java代码,通常是用来赋值和展示 jsp文件中注释内容 JSP编译 :设计一个登录页面查询展示金额的例子部分代码: 文件名称:showBal

weixin_46171048的博客 1110

在Simulink中进行基于强化学习控制策略的三相逆变器仿真

本文详细介绍了在Simulink中实现基于强化学习控制策略的三相逆变器仿真的完整流程。主要内容包括:1)准备工作,确保MATLAB/Simulink及相关工具箱安装;2)构建三相逆变器基础模型,包含电源、全桥电路、LC滤波器和负载;3)重点阐述强化学习控制器设计,涉及状态空间、动作空间定义,奖励函数设计和算法选择;4)实现控制逻辑,包括环境创建、代理配置和训练过程;5)仿真设置与结果分析。文章强调了模型调试优化的重要性,并建议结合文献研究提升控制效果。该方案为开发自适应电力电子控制系统提供了实用指南。

amy_mhd的博客 269

JSP入门

JSP入门

The_3的博客 1090

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

上一篇: Struts2 + easyui的DataGrid 分页
下一篇: 打算要读的书MARK
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值