171 lines
4.7 KiB
JavaScript
171 lines
4.7 KiB
JavaScript
/*
|
||
* 图片上传
|
||
* 配合imageUploader.swf 一起使用
|
||
*/
|
||
|
||
/**
|
||
* 检查flash状态
|
||
* @@private
|
||
* @@param {Object} target flash对象
|
||
* @@return {Boolean}
|
||
*/
|
||
function _checkReady(target) {
|
||
if (typeof target !== 'undefined' && typeof target.flashInit !== 'undefined' && target.flashInit()) {
|
||
return true;
|
||
} else {
|
||
return false;
|
||
}
|
||
};
|
||
/**
|
||
* 创建一个随机的字符串
|
||
* @@private
|
||
* @@return {String}
|
||
*/
|
||
function _createString() {
|
||
var prefix = 'bd__flash__';
|
||
return prefix + Math.floor(Math.random() * 2147483648).toString(36);
|
||
};
|
||
|
||
/**
|
||
* 为传入的匿名函数创建函数名
|
||
* @@private
|
||
* @@param {String|Function} fun 传入的匿名函数或者函数名
|
||
* @@return {String}
|
||
*/
|
||
function _createFunName(fun) {
|
||
var name = '';
|
||
name = _createString();
|
||
window[name] = function () {
|
||
fun.apply(window, arguments);
|
||
};
|
||
return name;
|
||
}
|
||
/***
|
||
反复判断Flash是欧加载完成,完成后为Flash添加回调函数..
|
||
*/
|
||
var FLASH_ID = "flashupload_houseimg";
|
||
var interval = setInterval(function () {
|
||
try {
|
||
var flash = thisMovie(FLASH_ID);
|
||
if (!flash) {
|
||
return;
|
||
}
|
||
if (_checkReady(flash)) {
|
||
//轮询flash的某个方法即可
|
||
var callBack = [];
|
||
callBack[0] = _createFunName(selectFileCallback);
|
||
callBack[1] = _createFunName(exceedFileCallback);
|
||
callBack[2] = _createFunName(deleteFileCallback);
|
||
callBack[3] = _createFunName(StartUploadCallback);
|
||
callBack[4] = _createFunName(uploadCompleteCallback);
|
||
callBack[5] = _createFunName(uploadErrorCallback);
|
||
callBack[6] = _createFunName(allCompleteCallback);
|
||
callBack[7] = _createFunName(changeHeightCallback);
|
||
thisMovie(FLASH_ID).call('setJSFuncName', [callBack]);
|
||
|
||
clearInterval(interval);
|
||
}
|
||
}
|
||
catch (ex) { }
|
||
}, 20);
|
||
|
||
//获得Flash对象
|
||
function thisMovie_old(movieName) {
|
||
if (navigator.appName.indexOf("Misrosoft") != -1) {
|
||
return window[movieName];
|
||
}
|
||
else {
|
||
return document[movieName];
|
||
}
|
||
}
|
||
function thisMovie(movieName) {
|
||
var isIE = navigator.appName.indexOf("Microsoft") != -1;
|
||
if (isIE)
|
||
{
|
||
return window[movieName]
|
||
}
|
||
else
|
||
{
|
||
return document.embeds[movieName];
|
||
}
|
||
//if (window.document[movieName]) {
|
||
// return window.document[movieName];
|
||
//}
|
||
//else if (navigator.appName.indexOf("Microsoft") == -1) {
|
||
// if (document.embeds && document.embeds[movieName]) {
|
||
// return document.embeds[movieName];
|
||
// }
|
||
//} else {
|
||
// return document.getElementById(movieName);
|
||
// //return document[movieName];
|
||
//}
|
||
}
|
||
function thisMovie_xxx(movieName) {
|
||
//这个是通用的查找Flash的函数。IE下是object,而FF下是document
|
||
var isIE = navigator.appName.indexOf("Microsoft") != -1;
|
||
return (isIE) ? window[movieName] : document[movieName];
|
||
}
|
||
// 通过添加文件按钮新增的需要上传文件
|
||
function selectFileCallback(selectFiles) {
|
||
|
||
|
||
}
|
||
// 文件超出限制的最大体积时的回调
|
||
function exceedFileCallback(selectFiles) {
|
||
|
||
}
|
||
//被删除的文件: 用于控制上传按钮是否显示...
|
||
function deleteFileCallback(delFiles) {
|
||
|
||
}
|
||
//开始上传前执行的JS函数.
|
||
function StartUploadCallback(data) {
|
||
|
||
}
|
||
//上传成功一个文件后执行的JS函数.(data参数使用于以下所有回调函数,关键是data.info)
|
||
//data.filename: "1_121029084117_2.png"
|
||
//data.filetype :".png"
|
||
//data.filesize :864163
|
||
//data.info: "{'url':'Upload//3e9a8006-c7a9-4b26-a015-f0bac4435613.png','title':'1_121029084117_2.png','original':'1_121029084117_2.png','state':'SUCCESS'}"
|
||
function uploadCompleteCallback(data) {
|
||
if (data != null && data != 'undefined') {
|
||
//转json
|
||
data.info = jQuery.parseJSON(data.info);
|
||
|
||
var _fids = $('#result_fids').val();
|
||
var _urls = $('#result_urls').val();
|
||
|
||
$('#result_fids').val((_fids == '') ? data.info.fid : (_fids + ',' + data.info.fid));
|
||
$('#result_urls').val((_urls == '') ? data.info.url : (_urls + ',' + data.info.url));
|
||
}
|
||
}
|
||
//上传失败后执行的JS函数.
|
||
function uploadErrorCallback(data) {
|
||
alert('上传失败\r\n\r\n' + data.info);
|
||
}
|
||
//全部完成上传后执行
|
||
function allCompleteCallback(data) {
|
||
if (data != null && data != 'undefined') {
|
||
//alert('allCompleteCallback:' + data);
|
||
|
||
}
|
||
}
|
||
//改变Flash高度时执行
|
||
function changeHeightCallback(data) {
|
||
|
||
}
|
||
|
||
//事件
|
||
//迁移到页面上了
|
||
//$(function () {
|
||
// $("#btnFlashUpload").on("click", function () {
|
||
// //return upload();
|
||
// //return thisMovie(FLASH_ID).upload();
|
||
// return thisMovie(FLASH_ID).call('upload');
|
||
// });
|
||
//});
|
||
|
||
//开始上传
|
||
//function upload() {
|
||
// thisMovie(FLASH_ID).upload();
|
||
//}
|