日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

plupload+artdialog实现多平台文件上传

發布時間:2024/6/18 编程问答 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 plupload+artdialog实现多平台文件上传 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

背景:本來項目中使用的前端文件上傳控件是uploadify,一切相安無事了一段時間后。現場傳來”喜訊“,客戶要用ipad使用系統,還想上傳圖片。客戶老爺一拍腦門,研發就要加班加點。大家知道uploadify是依賴flash的,所以在ios,mac系統上都不行。于是,經過一番google,找到了plupload。上手比較簡單。

?

頁面html代碼:

head標簽中包含必要的js文件

<script type="text/javascript" src="js/jquery-1.9.1.min.js" ></script> <!-- art dialog --> <script type="text/javascript" src="artdialog/artDialog.source.js?skin=blue"></script> <!-- plupload --> <script type="text/javascript" src="plupload/plupload.full.js"></script>

body標簽中的頁面元素

<!-- 觸發彈出框 --> <a id="uploadBtn" class="optionbtn inline" href="#">文件上傳</a> <div id="uploadContent" class="" style="display:none;height:300px;overflow-x:hidden;overflow-y:auto;"><div id="choosefile"><span>單個文件支持小于100M</span><br/><a id="uploadify" href="javascript:void(0);">選擇文件</a></div> <div id="uploadfileQueue" style="border: 1px solid #a7c5e2;height: 228px;width: 350px;"></div> </div><pre id="console"></pre>?

script標簽中的代碼

var globalUploader; function _plupload(){ var uploader = new plupload.Uploader({runtimes : 'html5,flash,silverlight,html4',browse_button: 'uploadify', //頁面上瀏覽文件的DOM對象的id屬性container: 'uploadContent',//包含browse_button的divurl: '/uploadAction!localUpload.action',//接收文件上傳的actionflash_swf_url : '/folder/js/plupload/Moxie.swf',silverlight_xap_url : '/folder/js/plupload/Moxie.xap',filters : {max_file_size : '100mb',//限制上傳文件大小mime_types: [//限制上傳文件類型{title : "Image files", extensions : "jpg,gif,png"}]},init: {PostInit: function() {$('#uploadfileQueue').html('');},UploadFile : function(up,file){//BeforeUpload后觸發 },BeforeUpload : function(up,file){//點擊按鈕后上傳前觸發,此處可以做查詢同名文件,檢查剩余空間等操作//檢查是否有重名文件,有則直接在文件名末尾加個括號和數字以示區分 $.ajax({url:"/folder/personal/personalAction!getNewFileName.action",type:"POST",async:false,data:{'upFileName' : file.name, 'globalPid' : globalPid},dataType:"json",success:function(data){//上傳前設置參數up.setOption('multipart_params', {upFileName : data.newFileName, upFileType : file.name.split(".")[file.name.split(".").length - 1],//后綴 upFileSize : file.size,parentId : globalPid});},error:function(XMLHttpRequest, textStatus, errorThrown){messageAlert("對不起,文件["+file.name+"]上傳準備失敗",''); // $('#uploadify').uploadify('cancel',file.id);//按id取消某個上傳任務 }});},FileFiltered: function(up, file){//選擇文件后觸發 },FilesAdded: function(up, files) {//文件添加到隊列中var i = 0;//記錄文件列表編號,刪除用plupload.each(files, function(file) {$('#uploadfileQueue').html($('#uploadfileQueue').html() + '<div id="' + file.id + '" class="uploadify-queue-item"><div class="cancel"><a href="javascript:_plupload_removeFile('+i+','+file.id+')"></a></div><span class="fileName">' + file.name + ' (' + plupload.formatSize(file.size) + ')</span><b></b><div class="uploadify-progress"><div class="uploadify-progress-bar"></div></div></div>');i ++;});},UploadProgress: function(up, file) {//點擊開始上傳后觸發,此處可以添加進度條,利用file.percentdocument.getElementById(file.id).getElementsByTagName('b')[0].innerHTML = '<span>-' + file.percent + "%</span>";//百分比$('#' + file.id).find('.uploadify-progress-bar').css('width', file.percent + '%');//進度條 },Error: function(up, err) {//出錯觸發document.getElementById('console').innerHTML += "\n錯誤 #" + err.code + ": " + err.message;},FileUploaded: function(up, file, info) {//一個文件上傳完觸發// Fires when a file is successfully uploaded.data = eval( "(" + info.response + ")" );//服務器返回的數據,此處可以修改頁面上的文件列表等 },UploadComplete: function(up, files){//所有文件上傳完觸發//Fires when all files in a queue are uploaded. }}});uploader.init();globalUploader = uploader; } function popUpDialog(){artDialog({id: 'file-upload',title: '文件上傳',fixed: true,lock: true,content: $("#uploadContent")[0],button:[{name: '開始上傳',focus:true,callback: function(){globalUploader.start();return false;}},{name: '關閉',callback: function(){$('#uploadfileQueue').html('');//刪掉上傳隊列的內容globalUploader.files.splice(0,globalUploader.files.length);//清除上傳隊列中的內容return true;}}],close: function(){$('#uploadfileQueue').html('');//刪掉上傳隊列的內容globalUploader.files.splice(0,globalUploader.files.length);//清除上傳隊列中的內容 }}); } $(function(){$('#uploadBtn').click(function(){popUpDialog();});_plupload(); });

后臺代碼就不寫了,我用的struts2后臺action中使用private File file接收的文件,改其他名字就是null,目前還不知道怎么設置控件中的這個值

然后效果就是這個樣子

想要進度條需要加上這些css樣式,就是已有控制

<style type="text/css">#uploadfileQueue {position: relative;left: 0;top: 0;border: 1px solid #a7c5e2;margin-bottom: 5px;height: 228px;width: 350px;overflow-x: hidden;overflow-y: auto;}.uploadify-queue-item {/* background-color: #F5F5F5; */background-color: #FFF;-webkit-border-radius: 3px;-moz-border-radius: 3px;border-radius: 3px;font: 11px Verdana, Geneva, sans-serif;/* margin-top: 5px; */margin: 5px 5px 5px 5px;max-width: 350px;padding: 10px;}.uploadify-progress {background-color: #E5E5E5;margin-top: 10px;width: 100%;}.uploadify-progress-bar {background-color: #0099FF;height: 3px;width: 1px;} </style>

最后的效果。什么,還想要uploadify的刪除隊列里文件的叉叉,好吧

在style里再加上這段

.uploadify-queue-item .cancel a {background: url('js/uploadify-cancel.png') 0 0 no-repeat;float: right;height: 16px;text-indent: -9999px;width: 16px; }
當然還得加上刪除的js代碼。這里官方api里面有removeFile(file)但是,用再這里不太好使。于是使用了另一個方法splice(num,length),num是從第幾個開始刪,length是刪除的個數。 function _plupload_removeFile(removeNum,fileId){globalUploader.files.splice(removeNum,1);//刪除部分文件 $(fileId).fadeOut(); }

最終效果。

轉載于:https://www.cnblogs.com/llhua/p/3805968.html

總結

以上是生活随笔為你收集整理的plupload+artdialog实现多平台文件上传的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。