代码如下:
<!DOCTYPE html>
demo
<br> body{ font-size: 12px;}<br> body,p,div{ padding: 0; margin: 0;}<br> .wraper{ padding: 30px 0;}<br> .btn-wraper{ text-align: center;}<br> .btn-wraper input{ margin: 0 10px;}<br> #file-list{ width: 350px; margin: 20px auto;}<br> #file-list li{ margin-bottom: 10px;}<br> .file-name{ line-height: 30px;}<br> .progress{ height: 4px; font-size: 0; line-height: 4px; background: orange; width: 0;}<br> .tip1{text-align: center; font-size:14px; padding-top:10px;}<br> .tip2{text-align: center; font-size:12px; padding-top:10px; color:#b00}<br> .catalogue{ position: fixed; _position:absolute; _width:200px; left: 0; top: 0; border: 1px solid #ccc;padding: 10px; background: #eee}<br> .catalogue a{ line-height: 30px; color: #0c0}<br> .catalogue li{ padding: 0; margin: 0; list-style: none;}<br>
</ul>
</div>
<script>
var uploader = new plupload.Uploader({ //实例化一个plupload上传对象
browse_button : 'browse',
url : 'upload.html',
flash_swf_url : 'js/Moxie.swf',
silverlight_xap_url : 'js/Moxie.xap',
filters: {
mime_types : [ //只允许上传图片文件
{ title : "图片文件", extensions : "jpg,gif,png" }
]
}
});
uploader.init(); //初始化
//绑定文件添加进队列事件
uploader.bind('FilesAdded',function(uploader,files){
for(var i = 0, len = files.length; i<len; i++){
var file_name = files[i].name; //文件名
//构造html来更新UI
var html = '<li id="file-' + files[i].id +'"><p class="file-name">' + file_name + '</p><p class="progress"></p></li>';
$(html).appendTo('#file-list');
!function(i){
previewImage(files[i],function(imgsrc){
$('#file-'+files[i].id).append('<img src="'+ imgsrc +'" />');
})
}(i);
}
});
//plupload中为我们提供了mOxie对象
//有关mOxie的介绍和说明请看:https://github.com/moxiecode/moxie/wiki/API
//如果你不想了解那么多的话,那就照抄本示例的代码来得到预览的图片吧
function previewImage(file,callback){//file为plupload事件监听函数参数中的file对象,callback为预览图片准备完成的回调函数
if(!file || !/image\//.test(file.type)) return; //确保文件是图片
if(file.type=='image/gif'){//gif使用FileReader进行预览,因为mOxie.Image只支持jpg和png
var fr = new mOxie.FileReader();
fr.onload = function(){
callback(fr.result);
fr.destroy();
fr = null;
}
fr.readAsDataURL(file.getSource());
}else{
var preloader = new mOxie.Image();
preloader.onload = function() {
preloader.downsize( 300, 300 );//先压缩一下要预览的图片,宽300,高300
var imgsrc = preloader.type=='image/jpeg' ? preloader.getAsDataURL('image/jpeg',80) : preloader.getAsDataURL(); //得到图片src,实质为一个base64编码的数据
callback && callback(imgsrc); //callback传入的参数为预览图片的url
preloader.destroy();
preloader = null;
};
preloader.load( file.getSource() );
}
}
</script>