公司任务,做一个网络硬盘的应用,本来经理说的很轻松,没想到我就这样做了50多天,累啊,折腾死,总体实现的是类似“网易网盘”的东西。不过关键是要支持大文件上传。
网上查了很多资料,都说SWFUpload不错,有进度条,上传还是类似AJAX的效果,有很好的客户体验。
闲话不多说,总结一下。看了很多网上的例子,不多很多都是PHP的,java的少之又少……
要使用SWFUpload,首先要下载相关的类库,我用的是V2.20的,支持Flash 10。引入相关js类库,这个可以下载V2.20的Samples看例子。
SWFUpload下载
在页面上首先要写上。
window.onload=function() {
selectitem=document.getElementById("paths").value;
userid=document.getElementById("userid").value;
usernamestr=document.getElementById("username").value;
upload1 = new SWFUpload({
// Backend Settings
upload_url: "../servlet/AddDocServlet", // Relative to the SWF file (or you can use absolute paths)
//需要传到后台的参数
post_params: {"userid" : userid,"username":usernamestr,"SELECTITEM" : selectitem},
//这个很重要,后台要request.getParameter("XXX")上面的参数,use_query_string必须设为true
use_query_string:true,
// File Upload Settings
file_size_limit : "1024000", // 1000MB
file_types : "*.*",
file_types_description : "All Files",
file_upload_limit : "0",
file_queue_limit : "0",
// Event Handler Settings (all my handlers are in the Handler.js file)
//事件的设定,基本不用动
file_dialog_start_handler : fileDialogStart,
file_queued_handler : fileQueued,
file_queue_error_handler : fileQueueError,
file_dialog_complete_handler : fileDialogComplete,
upload_start_handler : uploadStart,
upload_progress_handler : uploadProgress,
upload_error_handler : uploadError,
upload_success_handler : uploadSuccess,
upload_complete_handler : uploadComplete,
// Button Settings
/上传按钮的设置
on_image_url : "../scripts/XPButtonUploadText_61x22.png",
button_placeholder_id : "spanButtonPlaceholder1",
button_width: 61,
button_height: 22,
button_action : SWFUpload.BUTTON_ACTION.SELECT_FILES,
button_disabled : false,
// Flash Settings
flash_url : "scripts/swfupload.swf", // Relative to this file (or you can use absolute paths)
custom_settings : {
progressTarget : "fsUploadProgress1",
cancelButtonId : "btnCancel1"
},
// Debug Settings
debug: false
});
}
以上代码要注意的是参数post_params和use_query_string,post_params中的参数要在后台request.getParameter("XXX")到,use_query_string要设为True.
事件的设定部分,我主要用的是SWFUpload v2.2.0.1 Samples\demos\multiinstancedemo 这个例子中的事件,当然我根据我的需要改动了一下,一般不动也行。
上传的后台我用的是普通的Apache的commons-fileupload上传。
<table>
<tr valign="top">
<td>
<div>
<div class="fieldset flash" id="fsUploadProgress1">
<span class="legend"></span>
</div>
<div style="padding-left: 5px;">
//上传按钮
<span id="spanButtonPlaceholder1"></span>
//启动上传,这里我略有改动
<input id="btnStart1" type="button" value="上传" onclick="upload1.startUpload()" style="margin-left: 2px; height: 22px; font-size: 8pt;" />
<br />
</div>
</div>
</td>
</tr>
</table>
这里主要是上传界面的设置,不过这里自己改动了一下,原本是选择后直接上传,我改为了先选择,再上传。这里的上传按钮用图片来显示,主要是为了能在Flash 10中使用,因为Flash 10的安全性更强,对于弹窗这类显示动作需要用户通过鼠标或者键盘交互来触发,无法像以前一样使用脚本直接触发了。原先在Flash 9中能用按钮来弹出窗口,在Flash 10中不行了,会弹不出窗口。(我很倒霉,先是下了V2.0的吧,用来用去发现在Flash 10中不行,Flash 9中可以,后来,经理一句话,说Flash 10也要支持,我百度一下,居然发现新版早就有了,能支持Flash 10了,郁闷死……)
最后贴上我的网盘的上传界面效果图:
- 大小: 74.7 KB
分享到:
相关推荐
codeup《算法笔记》6.7小节——C++标准模板库(STL)介绍->stack的常见用法详解题目A:简单计算器题目编号:1918、《算法笔记》7.1小节——数据结构专题(1)->栈的应用题目A:简单计算器题目编号:1918: 题目描述: ...
《Java超级工具》囊括了30个开源工具...每一章都包含针对一个特定工具的一系列短小精悍的小节——无论这个工具用于构建系统、 版本控制或者开发流程中的其他方面——这样你就相当于在一个包装里得到了30本简短的书籍。
java.lang.annotation 为 Java 编程语言注释设施提供库支持。 java.lang.instrument 提供允许 Java 编程语言代理检测运行在 JVM 上的程序的服务。 java.lang.management 提供管理接口,用于监视和管理 Java 虚拟机...
Java URLRewriter是一个用于处理和重写URL的工具,它在Web开发中起着关键作用,尤其是在实现URL美化、URL路由、以及隐藏实际路径等方面。本文将深入探讨URLRewriter的工作原理、使用方法以及相关知识点。 ...
java.lang.annotation 为 Java 编程语言注释设施提供库支持。 java.lang.instrument 提供允许 Java 编程语言代理检测运行在 JVM 上的程序的服务。 java.lang.management 提供管理接口,用于监视和管理 Java 虚拟机...
·基于JDK 11,将Java8、Java9、Java10、Java11新特性一网打尽 ·课程中,Eclipse和IDEA这两种企业一线开发环境都使用到了 3.技术讲解更深入、更全面: ·课程共30天,715个知识视频小节,涉及主流Java使用的...
《算法笔记》6.3小节——C++标准模板库(STL)介绍->string的常见用法详解A字符串处理题目编号1983全部测试样例和输出样例: 题目描述: 读入两个字符串,字符串除了数字还可能包括 '—'、'E'、'e'、'.',相加之后...
java.lang.annotation 为 Java 编程语言注释设施提供库支持。 java.lang.instrument 提供允许 Java 编程语言代理检测运行在 JVM 上的程序的服务。 java.lang.management 提供管理接口,用于监视和管理 Java 虚拟机...
在这一小节中,我们将会看到一个非常基础但又至关重要的例子——如何在Java中打印一行文本。这个例子虽然简单,但却包含了Java程序的基本结构。 #### 示例代码分析: ```java // Fig.2.1: Welcome1.java // Text-...
**JSP(Java Server Pages)** 是一种动态网页技术,由Sun Microsystems开发,现在由Oracle公司维护。它允许Web开发者将HTML代码与Java代码结合在一起,以创建交互式的Web应用程序。JSP的主要目的是简化Java Web应用...
·基于JDK 11,将Java8、Java9、Java10、Java11新特性一网打尽 ·课程中,Eclipse和IDEA这两种企业一线开发环境都使用到了 3.技术讲解更深入、更全面: ·课程共30天,715个知识视频小节,涉及主流Java使用的...
·基于JDK 11,将Java8、Java9、Java10、Java11新特性一网打尽 ·课程中,Eclipse和IDEA这两种企业一线开发环境都使用到了 3.技术讲解更深入、更全面: ·课程共30天,715个知识视频小节,涉及主流Java使用的...
day01_Object类、常用API day02_Collection、泛型 day03_List、Set、数据结构、Collections day04_Map,斗地主案例 day05_异常,线程 day06_线程、同步 day07_等待与唤醒案例、线程池、Lambda...Java基础小节练习题答案
"Java开发手册1.5.0"详解 本手册是阿里巴巴集团技术团队的集体智慧结晶和经验总结,旨在提高Java开发者的综合素质和软件质量。手册共分为七个维度:编程规约、异常日志、单元测试、安全规约、MySQL数据库、工程结构...
java.lang.annotation 为 Java 编程语言注释设施提供库支持。 java.lang.instrument 提供允许 Java 编程语言代理检测运行在 JVM 上的程序的服务。 java.lang.management 提供管理接口,用于监视和管理 Java 虚拟机...
具体可参见TMS320C6713烧写Flash的通用方法的第5小节。 其次,数组越界是DSP程序中常见的错误。定义一个数组,例如int x[5];使用x[5]=10这样的语句在RAM程序中可能能正确运行,但在烧写Flash后运行就会出现死机或...