swfupload 的ASP上传示例代码

来源:互联网 发布:proxifier linux 编辑:程序博客网 时间:2024/06/03 19:15

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

差异具体体现在:
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); }   


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

原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 还没发货申请退款卖家不处理怎么办 快递写错电话被更改收货信息怎么办 货在派送中快递地址填错了怎么办 老板损坏了你保管的器材怎么办 闲鱼买家说不合适要退货怎么办 日本邮便局的单号我忘了怎么办 小米盒子自带播放器被删除了怎么办 在电视上装了央视影音要升级怎么办 用现金支付货款没有了证据怎么办 楚楚街不发货客服不理人怎么办 厨房那面墙借用别人的怎么办 天猫买东西商家不给发货怎么办 在唯品会上买的水果坏了怎么办 美团极速退款后商家仍然送餐怎么办 我的拼多多商家密码忘了怎么办 特约金服扣款连续扣了两次怎么办? 拼多多拒绝退款联系客服退款怎么办 镇江新设名称申报中字号怎么办 创维电视只有声音没有图像怎么办 京东E卡有密码忘记卡号怎么办? 香香鞋上的饰品老掉怎么办 联壁金融资金冻结提现不出来怎么办 联壁金融提现不到帐怎么办 联壁金融提现迟迟不到帐怎么办 客户说平安福现金价值低怎么办 2个月宝宝肚脐凸出来怎么办 西安华润万家预付卡丢了怎么办 租房签了一年合同想走怎么办 京东寄包裹在速递易里面该怎么办 翼码科技辅助码被删掉了怎么办 用别人的身份证注册的手机号怎么办 大v线做到假线了怎么办 有个摄像头网段不同搜不到怎么办 百度网盘离线下载有违规内容怎么办 抖音上传的照片与音乐不同步怎么办 社保卡里面的钱用完了怎么办 医保卡里面的钱用完了怎么办 手机通知栏变成了搜索栏怎么办 小米手机账号密码忘了手机号怎么办 暑假工没签合同押工资了的怎么办 在日本雅虎拍卖网站买到假货怎么办