swfupload(以下简称su)遇到的主要问题就是,版本不同造成的极大差异, 现在的版本已经到2.1beta。我用的是2.02版

简介: 异具体体现在: lash_url : "../swfupload/swfupload_f8. swf " upload _url: "../multiuploaddemo/upload .

异具体体现在:
lash_url : "../swfupload/swfupload_f8. swf "
upload _url: "../multiuploaddemo/upload .php",
function uploadSuccess(fileObj, server_data)
      如果flash_url用的是f8.swf ,那么upload _url要使用相对SWF 的路径;如果用的是f9.swf ,那么upload _url 要使用相对当前程序页面(jsp,asp )的路径,就是这点,耽误了我很长时间. 如果要使用server_data传递返回值,也必须用f9.swf ,这点也花 了我不少时间. 不管怎样,su都提供的全部源代码,有问题可以自己研究,前提是你能像我一样看的懂,呵呵.

      su使用的是flash的上传功能(Flash.net.FileReference;),还用了ActionScript 和 Flash Player 的容器之间实现直接通讯的应用程序编程接口ExternalInterface(详见后文附录),

su超级好用,而且功能强大,可以一次上传多个文件,能在客户端检验文件类型和大小,还能在上传进度中进行控制,能在文件传完后得到后台反馈信 息,有较好的debug对话框,比如看看它的高级示例: http://demo.swfupload.org/featuresdemo/index.php 目前唯一不足的可能是对中文文件名支持不好.我研究了半天它的flash as脚本,都没弄明白中文问题怎么改.

它的在线文档: http://demo.swfupload.org/Documentation/

下面具体讲讲su怎么用。
假设有一个前台页面upload .asp ,一个后 台接收文件的页面save.asp ,还有su的核心文件swfupload.js,辅助处理脚本handlers.js。
1, 这两个js,网上的源码里就有,核心js不用改. handlers可以直接用,也可以自己写,看各人本事了.
核心js里,主要是看SWFUpload.prototype.initSettings 初始化设置,很多参数该怎么写,可以参考它.
2, 要在前台页面里调用这两个js,然后初始化swfu对象。 折叠展开JavaScript复制代码
<script type="text/javascript">   
var swfu;   
window.onload = function () {   
    swfu = new SWFUpload({   
    // Backend Settings   
    upload _url: "upload .asp ",    // Relative to the SWF file 就是这个地方误导了我   
    file_post_name: "Filedata",  // 文件对象的名称,默认Filedata,可以自己改.后台接收就靠它识别   
    post_params: {"SESSID" : "<%=session.SessionID%>"},  // 附加参数,版本2新功能   
 
    // File Upload Settings   
    file_size_limit : "204",    // 单位kb, 限制文件大小   
    file_types : "*.jpg",  //允许的文件类型   
    file_types_description : "JPG Images", //对话框里的文件类型   
    file_upload _limit : "0",   
 
    // Event Handler Settings - these functions as defined in Handlers.js   
    //  The handlers are not part of SWFUpload but are part of my website and control how   
    //  my website reacts to the SWFUpload events.   
    //  事件处理,可以自己在handlers.js里面扩充,极大的方便了开发者   
    //  就是要在handlers里面定义如下的function,当然function里面可以什么也不干,或者用源代码自带的也行   
    file_queue_error_handler : fileQueueError,   
    file_dialog_complete_handler : fileDialogComplete,   
    upload _progress_handler : uploadProgress,   
    upload _error_handler : uploadError,   
    upload _success_handler : uploadSuccess,   
    upload _complete_handler : uploadComplete,   
 
    // Flash Settings   
    flash_url : "js/swfupload_f9.swf ",    // Relative to this file 注意是f8还是f9   
 
    custom_settings : {   
        upload _target : "divFileProgressContainer" 
    },   
       
    // Debug Settings 是否打开调试信息,默认false   
    debug: true 
    });   
}   
</script> 

下面是表单的写法,无需input type=file的写法 XML/HTML复制代码
<form> 
    <button id="btnBrowse" type="button" style="padding: 5px;" onclick="swfu.selectFiles(); this.blur();"><img src="image/page_white_add.png" style="padding-right: 3px; vertical-align: bottom;">Select Images <span style="font-size: 7pt;">(2 MB Max)</span></button> 
</form> 
3, 后台save.asp .
其实如果你做过普通的文件上传,这里就很简单,不管是jsp,asp ,php,基本原理都一样. 前台swf 得到文件后,还是用post方式提交给后台,文件对象默 认名为Filedata. 比如用asp 的无组件文件上传的处理写法如下 ASP /Visual Basic复制代码
<!--#include FILE="upload _5xsoft.inc"-->   
<%   
set upload =new upload _5xsoft   
for each formName in upload .objFile   
  set file=upload .file("Filedata")     
  file.saveAs Server.mappath(file.FileName)   
  set file=nothing   
next   
set upload =nothing   
response.write "ok" 
%>   
      java里怎么处理呢? 其实也已有,比如用struts,在actionform里有一个名为Filedata的FileItem对象即可.
php和aspx就不讲了,官方源文件就是php的例子,也有aspx的例子.

4, 返回结果如何显示?
比如上面第三步返回一个结果"ok". 在handlers里写上 JavaScript复制代码
function uploadSuccess(fileObj, server_data) {   
    try {   
        document.write( server_data);   
    } catch (ex) { this.debug(ex); }   


就这样简单.只要知道原理,你可以写出更复杂的效果.官方源代码提供了根据上传图片生成缩略图并马上显示的例子.

目录
相关文章
|
编解码 搜索推荐 图形学
Premiere2023精简版一键下载无须激活版PR下载
Adobe公司Premiere 简称为pr,这是一款适用于电影、电视和 Web 的业界领先视频编辑软件,通过它不仅可以帮助用户对各种视频进行剪辑、旋转、分割、合并、字幕添加、背景音乐等基础的处理,还能帮助用户进行视频颜色校正、颜色分级、稳定镜头、调整层、更改片段的持续时间和速度、效果预设等操作,功能十分的全面强大。当然,不仅如此其中不但内置了海量的素材供用户自由使用来更好的帮助你制作出精美的影片和视频,还能根据自己的需求直接与Ps、Au、Ae等程序进行无缝协作。PR 最新版本号是 2023,新增功能主要有丰富、直观的导入和导出模式,具有 Frame.io 集成的新审阅工作区,离线语音转文本新增
899 0
|
4月前
|
小程序 Linux C语言
Linux实现进度条小程序(包含基础版本和模拟下载过程版本)(下)
Linux实现进度条小程序(包含基础版本和模拟下载过程版本)
|
4月前
|
小程序 Linux C语言
Linux实现进度条小程序(包含基础版本和模拟下载过程版本)(上)
Linux实现进度条小程序(包含基础版本和模拟下载过程版本)
|
6月前
|
人工智能
保姆级别ps beta版本下载
保姆级别ps beta版本下载
81 0
|
11月前
|
前端开发 JavaScript
electron入门(16.0版本亲测可用)
electron入门全记录,亲测可用
113 1
升级Window10版本到20H2报错VirtualBox不兼容问题解决方法
升级Window10版本到20H2报错VirtualBox不兼容问题解决方法
134 0
升级Window10版本到20H2报错VirtualBox不兼容问题解决方法
|
iOS开发 数据安全/隐私保护
[分享]错误“应用程序Xcode的这个版本不能与此版本的OS X配合使用”以及Mac源码和IOS开发资料分享
[分享]错误“应用程序Xcode的这个版本不能与此版本的OS X配合使用”以及Mac源码和IOS开发资料分享 安装Xcode时,出现“应用程序Xcode的这个版本不能与此版本的OS X配合使用”错误如下: 解决方案是: /system/libary/coreservice/SystemVersion.plist中的两个10.10为10.10.5 修改过程会提示无权限修改,要不要建立副本,点击提示框中的“复制”按钮,存到桌面上。
3324 0
【Google Play】APK 扩展包 ( 2021年09月02日最新处理方案 | 内部测试链接 | 安装 Google Play 中带 扩展文件 的 APK 安装包 | 验证下载的扩展文件 )(一)
【Google Play】APK 扩展包 ( 2021年09月02日最新处理方案 | 内部测试链接 | 安装 Google Play 中带 扩展文件 的 APK 安装包 | 验证下载的扩展文件 )(一)
261 0
【Google Play】APK 扩展包 ( 2021年09月02日最新处理方案 | 内部测试链接 | 安装 Google Play 中带 扩展文件 的 APK 安装包 | 验证下载的扩展文件 )(一)
【Google Play】APK 扩展包 ( 2021年09月02日最新处理方案 | 内部测试链接 | 安装 Google Play 中带 扩展文件 的 APK 安装包 | 验证下载的扩展文件 )(二)
【Google Play】APK 扩展包 ( 2021年09月02日最新处理方案 | 内部测试链接 | 安装 Google Play 中带 扩展文件 的 APK 安装包 | 验证下载的扩展文件 )(二)
137 0
【Google Play】APK 扩展包 ( 2021年09月02日最新处理方案 | 内部测试链接 | 安装 Google Play 中带 扩展文件 的 APK 安装包 | 验证下载的扩展文件 )(二)
成功解决无法安装64位版本的office,因为在您的PC上找到了以下32位程序,已有32位版本
成功解决无法安装64位版本的office,因为在您的PC上找到了以下32位程序,已有32位版本
成功解决无法安装64位版本的office,因为在您的PC上找到了以下32位程序,已有32位版本