表单页面代码:
1.嵌入JS文件
<script src="formhelper_fileMem.js" language="JavaScript"></script>
formhelper_fileMem.js
function $_(id){
return document.getElementById(id);
}
//Flash的初始化事件,当Flash在浏览器已完全载入后将自动调用此脚本方法(如果存在的话)。
//在此事件中可进行相应的初始化工作,比如设置上传文件的地址、允许上传的文件类型等。
function FileUploader_onInit(){
var o = $_('FileUploader');
o.setUploadFileType("图片文件(*.jpg,*.bmp,*.doc)|*.jpg;*.bmp;*.doc");
o.setUploadFileUrl("http://localhost:7001/formhelper/upload.jsp");
o.setMaxFileSize(-1);
}
//当Flash出现错误时(如上传文件)将触发此事件
function FileUploader_onError(error){
alert("出现错误,错误信息为:" + error);
var o = $_('FileUploader');
o.resetUpload();
}
//当正在上传文件数据时将触发此事件,通过此事件中的两个参数可计算得知当前的上传进度。
//total : 返回的是当前正在上传文件的总大小,单位是:字节
//size : 返回的是共已上传到服务器的文件数据大小,单位是:字节
function FileUploader_onUploading(total,size){
var o = $_('per');
o.style.width = (size / total * 500) + "px";
o.innerText = Math.round((size / total * 100),2) + "%";
}
//当Flash已将所有文件数据上传到服务端时(服务端不一定已接收完数据)将触发此事件。
//file : 已上传的文件对象,拥有两个属性
//file.name : 文件名(不带任何路径)
//file.size : 文件大小,单位:字节
function FileUploader_onSendComplete(file){
alert("客户端已发送完文件的数据,文件名" + file.name + ",大小:" + file.size);
}
//当Flash已上传完数据并服务器已接收完数据时将触发此事件。
function FileUploader_onUploadComplete(data){
alert("上传文件完成,服务器返回数据:" + data);
$_('FileUploader').resetUpload();
}
2.表单嵌入的FLASH控件
<tr>
<td>
<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"
id="FileUploader" width="100%" height="80"
codebase="http://fpdownload.macromedia.com/get/flashplayer/current/swflash.cab">
<param name="movie" value="FileUploader.swf" />
<param name="quality" value="high" />
<param name="bgcolor" value="#ffffff" />
<param name="allowScriptAccess" value="sameDomain" />
<embed src="FileUploader.swf" quality="high" bgcolor="#ffffff"
width="100%" height="100%" name="FileUploader" align="middle"
play="true"
loop="false"
quality="high"
allowScriptAccess="sameDomain"
type="application/x-shockwave-flash"
pluginspage="http://www.adobe.com/go/getflashplayer">
</embed>
</object>
</td>
</tr>
3.对象的方法
附:对象方法
1)setUploadFileUrl(url)
设置接收上传文件数据的地址。
url : 路径地址。
2) setUploadFileType(exts)
设置允许选择的文件类型。
exts: 文件类型列表,格式为“描述|类型列表(使用“;”号隔开)”,如果需要设置多种类型可连续设置。如:
"文本文件(*.txt)|*.txt|图片文件(*.jpg,*.bmp,*.png)|*.jpg;*.bmp;*.png|所有文件(*.*)|*.*"
3) setMaxFileSize(size)
设置最大允许上传的文件大小,单位是"字节",如果设置为"-1"则表示不限制大小!如果选择的文件已超出此值,将自动触发onError事件,并返回"文件大小已超出限制范围"错误信息.
4)setBgColor(color)
设置Flash的背景颜色。
color : 可接受已知颜色的名称或以#开头的16进制颜色值
5)setButtonColor(color)
设置上传按钮的背景颜色。
color : 可接受已知颜色的名称或以#开头的16进制颜色值
6)setButtonText(text)
设置上传按钮的文本,上传按钮的文本默认为“上传本地文件”。
text : 字符串
7)setProgressBarColor(color)
设置上传进度条的颜色。
color : 可接受已知颜色的名称或以#开头的16进制颜色值
8)setProgressBarBgColor(color)
设置上传进度条的背景颜色。
color : 可接受已知颜色的名称或以#开头的16进制颜色值
9)selectLocalFile()
弹出选择文件窗口,并确定选择文件后自动将文件上传到服务器!此方法可代替Flash中上传按钮的点击。
10)resetUpload()
重设置Flash的上传界面,当Flash上传文件后默认的上传按钮已被隐藏,显示的则是一条上传进度条。
4.upload.jsp
<%@ page import="org.apache.commons.fileupload.*"%>
<%@ page import="java.text.SimpleDateFormat"%>
<%@ page import="java.util.*"%>
<%@ page import="java.io.*"%>
<%
String temp=request.getRealPath("/")+"\\files\\"; //临时目录
String loadpath=request.getRealPath("/")+"\\files\\"; //上传文件存放目录
request.setCharacterEncoding("utf-8");
DiskFileUpload fu = new DiskFileUpload();
fu.setSizeMax(1*1024*1024); // 设置允许用户上传文件大小,单位:字节
fu.setSizeThreshold(40); // 设置最多只允许在内存中存储的数据,单位:字节
fu.setRepositoryPath(temp); // 设置一旦文件大小超过getSizeThreshold()的值时数据存放在硬盘的目录
List fileItems = fu.parseRequest(request);
Iterator iter = fileItems.iterator(); // 依次处理每个上传的文件
while (iter.hasNext()) {
FileItem item = (FileItem) iter.next();// 忽略其他不是文件域的所有表单信息
if (!item.isFormField()) {
String name = item.getName();//获取上传文件名,包括路径
name=name.substring(name.lastIndexOf("\\")+1);//从全路径中提取文件名
long size = item.getSize();
if((name==null||name.equals("")) && size==0)
continue;
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss");
String newName=sdf.format(new Date());
File fNew= new File(loadpath, newName+name);
item.write(fNew);
String trance = "/files/"+newName+name;
String returnStr="<tr id='"+newName+"'><td class='style6'><a href='"+trance+"' target='_blank'>"+name+"</a></td><td class='style6'>"+fileType+"</td><td class='style6'><a href='#'><img src='/commons/menu/del.gif' border='0'></a></td></tr>";
response.setContentType("text/html;charset=utf-8");
out.println(returnStr); //返回给 onUploadComplete
}
}
%>
注:该flash下载地址 http://www.sj98.com/xwzj/ps/flash/200810/2097.html
分享到:
- 2009-05-22 18:06
- 浏览 2315
- 评论(0)
- 论坛回复 / 浏览 (0 / 4584)
- 查看更多
相关推荐
综上所述,这个项目提供了一种高效、直观的文件批量上传解决方案,结合了前端的SWFUpload和后端的FileUpload组件,同时通过Flash实现了上传进度的可视化,为用户提供了良好的交互体验。在Eclipse中直接运行的特性...
Fileupload提供了流式和内存两种处理方式,以适应不同大小的文件上传需求,确保上传的稳定性。 3. 集成过程: - 首先,在前端,你需要引入jQuery和jQuery Uploadify的JS及CSS文件,配置Uploadify的选项,如选择...
SWFUpload利用Flash插件实现了无刷新上传,提供进度反馈,而Apache Commons Fileupload则负责后台文件的接收和存储,两者结合,能构建出稳定可靠的文件上传系统。在实际项目中,根据具体需求对SWFUpload的配置和事件...
这个文件会引用`fileUpload.swf`,这是编译后的Flash文件,用户通过浏览器加载此SWF文件时,就能看到并使用多文件上传功能。 `de`目录可能包含了Flash开发过程中的一些辅助文件或资源,例如字体、图片等。而`...
在ASP.NET中,文件上传通常通过`<asp:FileUpload>`控件来实现,但单个文件上传限制较多,无法满足多文件同时上传的需求。 接着,我们引入Flash作为增强文件上传功能的工具。Flash是一个广泛应用于创建多媒体内容的...
"fileupload+uploadify上传demo"是一个实例,它结合了两个流行的JavaScript库——FileUpload和Uploadify,以提供更高效、用户友好的文件上传体验。以下是对这个Demo的详细解释和相关知识点的阐述。 FileUpload是...
标题中的"FileUpload整理过多选文件上传.zip"表明这是一个关于批量文件上传技术的资源包。在这个压缩包中,开发者或者学习者将找到有关如何实现一次选择并上传多个文件的解决方案。描述提到的"支持多文件上传,打破...
【标题】"Flash上传工具 修改版 FileUpload Flash"是一个针对B/S架构的文件上传解决方案,特别强调了其为修改版,意味着它可能包含了对原始版本的优化或功能增强。此工具利用Flash技术来实现文件上传,可以应用于多...
Uploadify则是一个JavaScript库,利用Flash插件实现异步文件上传,提供用户友好的界面和丰富的自定义选项。 ### Struts2 文件上传原理 在Struts2中,文件上传主要依赖于`struts2-core`库中的`org.apache.struts2....
在***开发中,文件上传是常见的功能之一,通过fileupload控件,开发者可以实现用户界面上传文件到服务器端的逻辑。本篇文档详细介绍了fileupload控件的基本用法,如何进行单文件上传以及如何实现多文件上传,以及...
3. **处理上传请求**:在Action类的execute方法中,使用Servlet API的`Part`接口或者Struts的`FileUpload`拦截器来接收上传的文件。你需要检查文件大小、类型,然后将其保存到服务器的指定位置。 4. **返回响应**:...
SWFUpload是一个基于Flash的文件上传组件,它可以提供多文件选择、文件预览和上传进度显示等功能。尽管Flash技术现在已逐渐被淘汰,但在过去,它是实现浏览器跨平台上传功能的有效方式。SWFUpload通过在后台运行的...
**Flash 文件上传组件** 在Web开发中,Flash文件上传组件是一种常见的技术,它允许用户在网页上方便地上传多个文件。这种组件在HTML5的File API出现之前,尤其是在需要跨浏览器兼容性和支持大文件上传时,是十分...
为了便于开发者快速实现这一功能,网上有许多开源工具和组件可供参考,如Apache Commons FileUpload库可以帮助处理Java的文件上传,而在Flex方面,可能有现成的组件库如flex-file-uploader等,它们已经封装好了文件...
plupload是一款强大的跨浏览器文件上传组件,它支持多种浏览器和多种文件上传方式,包括HTML5的File API、Flash、Silverlight和iframe。其主要特点包括: 1. **多浏览器兼容性**:plupload设计时考虑了多种浏览器...
Flash曾经是创建网页交互元素的流行工具,特别是对于处理多媒体内容如图片上传,它提供了良好的用户体验,因为可以预览和选择多个文件。 首先,我们来看`kzupload.asp`和`kzuping.asp`这两个文件。它们很可能是主要...
Apache Commons FileUpload库是一个常用的辅助工具,它简化了大文件上传的处理。 Flash在其中的角色是提供用户友好的界面,让用户可以选择本地文件并发送到服务器。Flash支持XMLSocket或URLStream等技术进行数据...
总之,"fileUpload(兼容IE的Ajax上传图片)"是一个针对老旧浏览器的文件上传解决方案,它利用了Ajax技术并解决了在IE8上的兼容性问题,为用户提供了一种流畅且无刷新的图片上传体验。通过理解和实现这样的功能,...
- Struts2提供了一个名为`CommonsFileUploadInterceptor`的拦截器,它基于Apache Commons FileUpload库来处理文件上传。首先,需要在`struts.xml`配置文件中启用此拦截器。 - 需要在Action类中创建一个`java.io....
1. **Commons FileUpload库**:Apache Commons FileUpload是一个流行的Java库,用于处理multipart/form-data类型的HTTP请求,这是上传文件的标准格式。 2. **Servlet生命周期**:Servlet需要正确地配置在web.xml中...