uploader = WebUploader.create({ swf: 'resources/js/webuploader-0.1.5/Uploader.swf', // 文件接收服務端。
server: settings.url, // 選擇文件的按鈕。可選。 // 內部根據當前運行是創建,可能是input元素,也可能是flash。
pick : '#picker', // 不壓縮image, 默認如果是jpeg,文件上傳前會壓縮一把再上傳!
resize : false });
以上代碼是不支持重復上傳:根據查看webuploader文檔里面有個duplicate屬性,是可選的,true為可重復,false為不可重復,默認為undifind,也是不可重復。所以只需在屬性的后面追加 duplicate:true 就可以實現重復上傳。
uploader = WebUploader.create({ swf: 'resources/js/webuploader-0.1.5/Uploader.swf', // 文件接收服務端。
server: settings.url, // 選擇文件的按鈕。可選。 // 內部根據當前運行是創建,可能是input元素,也可能是flash.
pick : '#picker', // 不壓縮image, 默認如果是jpeg,文件上傳前會壓縮一把再上傳!
resize : false, //可重復上傳 duplicate :true });
文件上傳控件:webuploader + jQuery,開源而且好用。但是在使用過程中出現一些問題:
1、上傳多張圖片,圖片的順序會亂掉。解決方法:threads:1
2、文件沒有按照原來比例上傳,1M多的文件會被壓縮,解決方法:compress: false
3、選擇文件的時候瀏覽器反應遲鈍,解決方法:
accept: { title: 'Images', extensions: "gif,jpg,jpeg,png", mimeTypes: ".gif,.jpg,.jpeg,.png" }
4、ie瀏覽器,上傳文件失敗,有可能是"swf"定義的文件路徑不對。ie瀏覽器是用flash模式上傳文件的。
var fileCount=0; var fileSize=0; var uploader; var errorarr=new Array(); function initFile(){ uploader = WebUploader.create({ auto: true, // swf文件路徑
swf : '/ueditor/third-party/webuploader/Uploader.swf', // 文件接收服務端。
server : "upFiles.do", // 選擇文件的按鈕。可選。 // 內部根據當前運行是創建,可能是input元素,也可能是flash.
pick : '#filePicker', // 不壓縮image, 默認如果是jpeg,文件上傳前會壓縮一把再上傳! //resize : false,//這個不起作用,要用compress
compress: false,//webuploader默認壓縮圖片,設置compress:false,可以按照原始比例上傳圖片
accept: { title: 'Images', extensions: "gif,jpg,jpeg,png", mimeTypes: ".gif,.jpg,.jpeg,.png"//解決WebUploader在谷歌瀏覽器中反應緩慢遲鈍,雖然解決了問題,但是火狐瀏覽器,選擇文件的時候不做限制了
}, fileVal:"upfile",//設置文件上傳域的name。
fileSizeLimit:500 * 1024 * 1024,//所有文件上傳的大小限制,單位字節
fileSingleSizeLimit:2 * 1024 * 1024,//單張圖片上傳限制大小,單位字節
fileNumLimit:20,//文件上傳數量限制
threads:1//上傳並發數。允許同時最大上傳進程數,為了保證文件上傳順序
}); /*當文件被加入隊列以后觸發。 @param file File對象 @param ret 服務器返回的數據 */ uploader.on('uploadSuccess', function (file, ret) { var $file = $('#' + file.id); try { if (ret.state == 'SUCCESS') { var json={}; json.dataid=ret.picId; json.src=ret.url; json.width=ret.width; json.height=ret.height; if(!putPicMap(json)){//加入圖片列表
return false; } }else { //console.log("faile","aa");
} } catch (e) { //console.log("faile","bb");
} }); /** *文件上傳失敗 *code=F_DUPLICATE 上傳文件重復 **/ uploader.on('error', function (code, file) { var name=file.name; var str=""; switch(code){ case "F_DUPLICATE": str=name+"文件重復"; errorarr.push(str); break; case "Q_TYPE_DENIED": str=name+"文件類型 不允許"; errorarr.push(str); break; case "F_EXCEED_SIZE": var imageMaxSize = 9;//通過計算
str=name+"文件大小超出限制"+imageMaxSize+"M"; errorarr.push(str); break; case "Q_EXCEED_SIZE_LIMIT": errorarr.push("超出空間文件大小"); break; case "Q_EXCEED_NUM_LIMIT": errorarr.push("抱歉,超過每次上傳數量圖片限制"); default: str=name+" Error:"+code; } }); uploader.on( 'all', function( type, arg1, arg2 ) { if(type=="startUpload"){//開始上傳
uploadchange(); }else if(type=="uploadFinished"){//上傳結束
if(errorarr.length>0){ alert(errorarr.join("\n")); } //清空錯誤信息
errorarr.length=0; } }); } /** * 本地上傳圖片,改變上傳的相冊,文件上傳的路徑也會改變 */ function uploadchange(){ //這里可以限制文件上傳個數,未做
/* 添加額外的GET參數 */ uploader.option('server', "upFiles.do?aa=3"); }