当前位置: 代码迷 >> Web前端 >> uploadify下传图片
  详细解决方案

uploadify下传图片

热度:347   发布时间:2012-07-15 20:20:06.0
uploadify上传图片

上传图片要加个进度条,找到了一个jquery插件uploadify,下载了最新版3.1

由于小弟是第一次用这个插件,所以不是很懂,于是就去网上找了资料,坑爹开始了。

我找到了个这个网站http://www.phptogether.com/uploadifydoc/

还以为爽到了,没想到这网站根本不靠谱,被坑的好惨。

还是靠自己吧,打开下载的uploadify的js,别不要被一大堆的东东吓到,咱们看关键的东东。

这个插件用的是swfupload这个上传插件,就是它的修改版

找到这么一行

var handlers = {

后面接的都是方法了

例如onSelect : function(file) {

这个方法就是当选择了图片了触发的事件

关键的是onUploadComplete : function(file) {

这个方法是当图片上传完成后触发的事件,而不是那网站说的onComplete

其他方法就不多说明了,看方法名基本就知道是做什么用的

再在页面调用它


$(function() {

?$('#file_upload').uploadify({

?swf ? ? ? ? ? : '/js/uploadify/uploadify.swf',

? ? ?uploader ? ? ?: 'http://up.6v.com/blog/uploadAvatar',

? ? ?buttonText :'修改头像',

? ? ?formData :{blogid:<?=$bloginfo ["Blogid"]?>},

? ? ?onUploadSuccess ?: function(file, data, response) {

? ? ?data=eval("("+data+")");

? ? ?showcut( data);

? ? ? ?}

?});

});

这里的formData是指同文件一起发送的数据,默认是post

因为它用的是swfupload,所以是支持跨域的,在根目录下建个crossdomain.xml文件


<?xml version="1.0"?>

<!DOCTYPE cross-domain-policy SYSTEM "http://www.macromedia.com/xml/dtds/cross-domain-policy.dtd">

<cross-domain-policy>

? ?<allow-access-from domain="*.qweibo.com" />//此处是你支持跨的域名

</cross-domain-policy>

完成这些就差不多了,还得靠自己啊,网站有时太坑人了


设置的属性:
id: jQuery(this).attr('id'),//绑定的input的ID
langFile: 'http://www.static-xxx.nu/uploader/uploadifyLang_en.js',//语言包的路径,能设置所有的提示文字
swf: 'http://www.static-xxx.nu/uploader/uploadify.swf',//[必须设置]swf的路径
uploader: '/uploadify/galleri.php',//[必须设置]上传文件触发的url
auto:false,//文件选择完成后,是否自动上传
buttonText:'V?lj Filer',//上传按钮的文字
height: 30,//上传按钮的高和宽
width: 120,
buttonCursor: 'pointer',//上传鼠标hover后Cursor的形状
cancelImage: 'http://www.static-xxx.nu/uploadify-cancel.png',//[必须设置]取消图片的路径
checkExisting:'/uploader/uploadify-check-existing.php',//检查上传文件是否存,触发的url,返回1/0
debug: true,//debug模式开/关,打开后会显示debug时的信息
fileObjName:'file',
fileSizeLimit : 0,//文件的极限大小,以字节为单位,0为不限制。1MB:1*1024*1024
fileTypeDesc: 'Bild JPG',//允许上传的文件类型的描述,在弹出的文件选择框里会显示
fileTypeExts: '*.jpg',//允许上传的文件类型,限制弹出文件选择框里能选择的文件
method: 'post',//和后台交互的方式:post/get
multi: true,//是否能选择多个文件
queueID: 'fileQueue',//显示上传文件队列的元素id,可以简单用一个div来显示
queueSizeLimit : 999,//队列中允许的最大文件数目
progressData : 'all', // 'percentage''speed''all'//队列中显示文件上传进度的方式:all-上传速度+百分比,percentage-百分比,speed-上传速度
removeCompleted : true,//上传成功后的文件,是否在队列中自动删除
removeTimeout: 3,
requeueErrors : true,
postData: {},//和后台交互时,附加的参数
preventCaching : true,
transparent: true,
successTimeout : 30,//上传时的timeout
uploadLimit:999//能同时上传的文件数目
?
设置的事件:

onDialogClose : function(swfuploadifyQueue) {//当文件选择对话框关闭时触发
  if( swfuploadifyQueue.filesErrored > 0 ){
  alert( '添加至队列时有'
  +swfuploadifyQueue.filesErrored
  +'个文件发生错误n'
  +'错误信息:'
  +swfuploadifyQueue.errorMsg
  +'n选定的文件数:'
  +swfuploadifyQueue.filesSelected
  +'n成功添加至队列的文件数:'
  +swfuploadifyQueue.filesQueued
  +'n队列中的总文件数量:'
  +swfuploadifyQueue.queueLength);
  }
}

onDialogOpen : function() {//当选择文件对话框打开时触发
  alert( 'Open!');
}

?

onSelect : function(file) {//当每个文件添加至队列后触发
  alert( 'id: ' + file.id
  + ' - 索引: ' + file.index
  + ' - 文件名: ' + file.name
  + ' - 文件大小: ' + file.size
  + ' - 类型: ' + file.type
  + ' - 创建日期: ' + file.creationdate
  + ' - 修改日期: ' + file.modificationdate
  + ' - 文件状态: ' + file.filestatus);
}

?

onSelectError : function(file,errorCode,errorMsg) {//当文件选定发生错误时触发
  alert( 'id: ' + file.id
  + ' - 索引: ' + file.index
  + ' - 文件名: ' + file.name
  + ' - 文件大小: ' + file.size
  + ' - 类型: ' + file.type
  + ' - 创建日期: ' + file.creationdate
  + ' - 修改日期: ' + file.modificationdate
  + ' - 文件状态: ' + file.filestatus
  + ' - 错误代码: ' + errorCode
  + ' - 错误信息: ' + errorMsg);
}

?

onQueueComplete : function(stats) {//当队列中的所有文件全部完成上传时触发
  alert( '成功上传的文件数: ' + stats.successful_uploads
  + ' - 上传出错的文件数: ' + stats.upload_errors
  + ' - 取消上传的文件数: ' + stats.upload_cancelled
  + ' - 出错的文件数' + stats.queue_errors);
}

?

onUploadComplete : function(file,swfuploadifyQueue) {//队列中的每个文件上传完成时触发一次
  alert( 'id: ' + file.id
  + ' - 索引: ' + file.index
  + ' - 文件名: ' + file.name
  + ' - 文件大小: ' + file.size
  + ' - 类型: ' + file.type
  + ' - 创建日期: ' + file.creationdate
  + ' - 修改日期: ' + file.modificationdate
  + ' - 文件状态: ' + file.filestatus
  + ' - 出错的文件数: ' + swfuploadifyQueue.filesErrored
  + ' - 错误信息: ' + swfuploadifyQueue.errorMsg
  + ' - 要添加至队列的数量: ' + swfuploadifyQueue.filesSelected
  + ' - 添加至对立的数量: ' + swfuploadifyQueue.filesQueued
  + ' - 队列长度: ' + swfuploadifyQueue.queueLength);
}

?

onUploadError : function(file,errorCode,errorMsg,errorString,swfuploadifyQueue) {//上传文件出错是触发(每个出错文件触发一次)
  alert( 'id: ' + file.id
  + ' - 索引: ' + file.index
  + ' - 文件名: ' + file.name
  + ' - 文件大小: ' + file.size
  + ' - 类型: ' + file.type
  + ' - 创建日期: ' + file.creationdate
  + ' - 修改日期: ' + file.modificationdate
  + ' - 文件状态: ' + file.filestatus
  + ' - 错误代码: ' + errorCode
  + ' - 错误描述: ' + errorMsg
  + ' - 简要错误描述: ' + errorString
  + ' - 出错的文件数: ' + swfuploadifyQueue.filesErrored
  + ' - 错误信息: ' + swfuploadifyQueue.errorMsg
  + ' - 要添加至队列的数量: ' + swfuploadifyQueue.filesSelected
  + ' - 添加至对立的数量: ' + swfuploadifyQueue.filesQueued
  + ' - 队列长度: ' + swfuploadifyQueue.queueLength);
}

?

onUploadProgress : function(file,fileBytesLoaded,fileTotalBytes,
queueBytesLoaded,swfuploadifyQueueUploadSize) {//上传进度发生变更时触发
alert( 'id: ' + file.id
  + ' - 索引: ' + file.index
  + ' - 文件名: ' + file.name
  + ' - 文件大小: ' + file.size
  + ' - 类型: ' + file.type
  + ' - 创建日期: ' + file.creationdate
  + ' - 修改日期: ' + file.modificationdate
  + ' - 文件状态: ' + file.filestatus
  + ' - 当前文件已上传: ' + fileBytesLoaded
  + ' - 当前文件大小: ' + fileTotalBytes
  + ' - 队列已上传: ' + queueBytesLoaded
  + ' - 队列大小: ' + swfuploadifyQueueUploadSize);
}

?

onUploadStart: function(file) {//上传开始时触发(每个文件触发一次)
  alert( 'id: ' + file.id
  + ' - 索引: ' + file.index
  + ' - 文件名: ' + file.name
  + ' - 文件大小: ' + file.size
  + ' - 类型: ' + file.type
  + ' - 创建日期: ' + file.creationdate
  + ' - 修改日期: ' + file.modificationdate
  + ' - 文件状态: ' + file.filestatus );
}

?

onUploadSuccess : function(file,data,response) {//上传完成时触发(每个文件触发一次)
  alert( 'id: ' + file.id
  + ' - 索引: ' + file.index
  + ' - 文件名: ' + file.name
  + ' - 文件大小: ' + file.size
  + ' - 类型: ' + file.type
  + ' - 创建日期: ' + file.creationdate
  + ' - 修改日期: ' + file.modificationdate
  + ' - 文件状态: ' + file.filestatus
  + ' - 服务器端消息: ' + data
  + ' - 是否上传成功: ' + response);
}