swf 上传
推荐这个博客:http://blog.csdn.net/hi_kevin/article/details/23430345
这个文章很不错,我推荐这个文章:http://leeon.me/upload/other/swfupload.html#globals
var swfu;
window.onload = function () {
var settings = {
flash_url: "/plugins/swfupload/core/Flash/swfupload.swf",
upload_url: "/system/upload/annex",
post_params: {"PHPSESSID": sessionId, "name": "annex"},
file_size_limit: "30 MB",
file_types: "*.gif;*.jpg;*.jepg;*.png;*.bmp;*.txt;*.zip;*.rar;*.pdf;*.ppt;*.doc;*.xls;*.xlsx;*.docx;*.rtf",
file_types_description: "jap,png,rar,zip",
file_upload_limit: 0,
file_queue_limit: 0,
custom_settings: {
progressTarget: "fsUploadProgress",
cancelButtonId: "btnCancel"
},
debug: false, // Button settings
button_width: "80",
button_height: "20",
button_placeholder_id: "spanButtonPlaceHolder",
button_text: '上传附件',
button_text_left_padding: 12,
button_text_top_padding: 3, // The event handler functions are defined in handlers.js
file_queue_error_handler: fileQueueError,
file_dialog_complete_handler: replyFileDialogComplete,//当选择文件对话框关闭,并且所有选择文件已经处理完成(加入上传队列成功或者失败)时,此事件被触发
upload_error_handler: uploadError,
upload_success_handler: replyUploadSuccess,//当文件上传的处理已经完成
upload_start_handler: uploadStart,
file_queued_handler: fileQueued,// 文件被加入队列时触发 upload_progress_handler: uploadProgress //进度
// upload_start_handler: upload_start_handlers //在文件往服务端上传之前触发此事件,可以在这里完成上传前的最后验证以及其他你需要的操作
// upload_progress_handler : uploadProgress,
};
swfu = new SWFUpload(settings);
}; function fileQueued(file) {
var swfUpload = this;
var listItem = '<li id="' + file.id + '">';
listItem += '文件:<em>' + file.name + '</em>(' + Math.round(file.size/1024) + ' KB)';
listItem += '<span class="progressValue"></span>'
+ '<div class="progressBar"><div class="progress"></div></div>'
+ '<p class="status" >Pending</p>'
+ '<span class="cancel" > </span>'
+ '</li>';
$("#logList").append(listItem);
// $("li#" + file.id + " .cancel").click(function(e) {
// swfUpload.cancelUpload(file.id);
// $("li#" + file.id).slideUp('fast');
// })
// swfUpload.startUpload();
} function uploadStart(file) {
if (file) {
$("#logList li#" + file.id).find('p.status').text('上传中...');
$("#logList li#" + file.id).find('p.progressValue').text('0%');
}
}
/**
* 文件上传过程中定时触发,更新进度显示
* @param file 上传的文件
* @param bytesCompleted 已上传大小
* @param bytesTotal 文件总大小
*/
function uploadProgress(file,bytesCompleted,bytesTotal) {
var percentage = Math.round((bytesCompleted / bytesTotal) * 100);
$("#logList li#" + file.id).find('div.progress').css('width',percentage + '%');
$("#logList li#" + file.id).find('span.progressValue').text(percentage + '%');
} //上传成功动作
function replyUploadSuccess(file, serverData) {
try { var data = JSON.parse(serverData);
var size = $("div .btn-group").attr("data-size");
layer.msg("附件(" + file.name + ")上传成功", 1, {type: 1}, function () {
//显示附件信息
var html = '<div class="btn-group" data-size="0" style="margin-left: 70px;" id="' + data.fileId + '"><input type="checkbox" class="annex"' +
' style="float:left;" checked name="annex[' + data.fileId + ']" value="' + file.name + '" ><div name="filename" style="float:left;" >' + file.name + '</div>' +
'<a style="margin-left:20px;cursor:pointer;float:left; " onclick="delAnnex(this)" >删除</a></div> '; var item = $("#logList li#" + file.id);
item.find('div.progress').css('width','100%');
item.find('span.progressValue').css('color','red').text('100%');
item.addClass('success').find('p.status').html('上传完成!'); if(size==null ||size=='undefied'){
$("#showAnnex").append(html);
$("div .btn-group").attr("data-size", file.size);
}else{
var total_size = size * 1 + file.size * 1;
$("div .btn-group").attr("data-size", total_size);
var max_size = $("div .btn-group").attr("data-size");
if(max_size>=52428800){
alert("附件总大小不超过 50M"); return ;
}else{
$("#showAnnex").append(html);
}
}
//绑定文件删除事件
$(".annex").change(function () {
if (!$(this).is(':checked')) {
$(this).parent().remove();
}
//TODO 检查是否显示上传框
});
});
} catch (ex) {
this.debug(ex);
alert(ex);
}
} //上传文件
function replyFileDialogComplete(numFilesSelected, numFilesQueued) {
try {
this.startUpload();
} catch (ex) {
this.debug(ex);
}
} //删除附件操作
function delAnnex(obj) {
var annex = obj.parentNode.firstChild.value;
$.ajax({
type: "get",
url: "/email/draft/del-annex?annex=" + annex,
dataType: "json",
success: function (data) {
if (data.status == 'y') {
obj.parentNode.remove();
layer.msg(data.info, 1, 9);
$_this.parent().parent().remove();
} else {
layer.alert(data.info);
}
}
});
}
swf 上传的更多相关文章
- swf上传文件
以下是自学it网--中级班上课笔记 网址:www.zixue.it 引入的js包自己在网上找一个,这里好像不支持上传文件,反正我没找到,呵呵~~ html文件 <!DOCTYPE html PU ...
- swf上传
swfupload多文件异步上传 多文件选择异步上传的原理 传统上:多个文件逐一选.PHP开始处理,循环上 PHP+Flash上:JS调用flash控,Flash批量选取并保持选取所有文件列 swfu ...
- jquery.uploadify文件上传组件
1.jquery.uploadify简介 在ASP.NET中上传的控件有很多,比如.NET自带的FileUpload,以及SWFUpload,Uploadify等等,尤其后面两个控件的用户体验比较好, ...
- jquery文件上传控件 Uploadify 问题记录
Uploadify v3.2.1 首先引用下面的文件 <!--上传控件 uploadify--> <script type="text/javascript" s ...
- PHP上传大文件 分割文件上传
最近遇到这么个情况,需要将一些大的文件上传到服务器,我现在拥有的权限是只能在一个网页版的文件管理系统来进行操作,可以解压,可以压缩,当然也可以用它来在线编辑.php文件. 文件有40M左右,但是服务器 ...
- JQuery文件上传插件uploadify在MVC中Session丢失的解决方案
<script type="text/javascript"> var auth = "@(Request.Cookies[FormsAuthenticati ...
- jsp+servlet+jquery 用jquery uploadify最新版本实现多文件上传
//这是script代码 <link rel="stylesheet" type="text/css" href="uploadify/uplo ...
- ASP.NET Jquery+ajax上传文件(带进度条)
效果图 支持ie6+,chrome,ie6中文文件名会显示乱码. 上传时候会显示进度条. 需要jquery.uploadify.js插件,稍后会给出下载 前台代码 <%@ Page Langua ...
- Springmvc+uploadify实现文件带进度条批量上传
网上看了很多关于文件上传的帖子,众口不一,感觉有点乱,最近正好公司的项目里用到JQuery的uploadify控件做文件上传,所以整理下头绪,搞篇文档出来,供亲们分享. Uploadify控件的主要优 ...
随机推荐
- pyqt笔记2 布局管理
https://zhuanlan.zhihu.com/p/28559136 绝对布局 相关方法setGeometry().move() 箱式布局 QHBoxLayout和QVBoxLayout是基本的 ...
- SPOJ 839 Optimal Marks(最小割的应用)
https://vjudge.net/problem/SPOJ-OPTM 题意: 给出一个无向图G,每个点 v 以一个有界非负整数 lv 作为标号,每条边e=(u,v)的权w定义为该边的两个端点的标号 ...
- python学习 day011打卡 迭代器
本节的主要内容: 1.函数名的使用以及第一类对象 2.闭包 3.迭代器 一.函数名的运用. 函数名是一个变量,但它是一个特殊的变量,与括号配合可以执行函数的变量. 1.函数名的内存地址 def fun ...
- VirtualBox-- 虚拟机网络设置2--主机与虚拟机互相访问且均上外网
转载自:http://blog.sina.com.cn/s/blog_7de9d5d80100t2uw.html VirtualBox中有4中网络连接方式:NATBridged AdapterIn ...
- node项目配置成nginx启动
node项目配置成nginx启动 1.新建ant.conf upstream antNodeJs{ server 127.0.0.1:8000; keepalive 64; } server { li ...
- django 配置 Django
Django项目的设置文件位于项目同名目录下,名叫settings.py.这个模块,集合了整个项目方方面面的设置属性,是项目启动和提供服务的根本保证. 一.简述 settings.py文件本质上是一个 ...
- python3使用pymysql模块,连接mysql数据库,实现新增、查询和更新操作
1.环境数据准备: python3环境.pymysql模块 mysql数据库:本次代码中用到的数据库为本地的testdb数据库,user表(表字段比较简单,只有主键id,手机号mobile,密码pas ...
- 【转】VC 利用DLL共享区间在进程间共享数据及进程间广播消息
1.http://blog.csdn.net/morewindows/article/details/6702342 在进程间共享数据有很多种方法,剪贴板,映射文件等都可以实现,这里介绍用DLL的共享 ...
- CoordinatorLayout实现的效果(标题栏效果)
一.效果 CoordinatorLayouy是一个能够协调子布局的容器布局. 使用引入: compile 'com.android.support:design:24.1.1' 常见的使用方法如下:1 ...
- Codeforces 920F - SUM and REPLACE
920F - SUM and REPLACE 思路1: 线段树(982 ms) 每个点最多更新6次 代码: #include<bits/stdc++.h> using namespace ...