初始上傳界面css
//連接添加彈窗 html代碼段↓ var msgcontent = ""; msgcontent += '<ul class="linkAddBox">'; msgcontent += '<li><p class="Z_pHOTOtIPS p10" style="margin-top:0;display: inline-block;"><b class="Z_TipsIcon fl mr5"></b><span class="fl mt4 color6">說明:一次能夠最多能夠上傳50張.jpg .png .bmp .gif格式的圖片,每張不超過10M。按<b>ctrl</b>或<b>shift</b>可選擇多張</span></p></li>'; msgcontent += '<li><span> 選擇專輯:</span><select class="typeselectdata"><option value="0">所有專輯</option></select></li>'; msgcontent += '<li class="clearfix">'; msgcontent += '<div id="ChoosePhoto"><img src="/Public/Image/Upload.jpg" style=" width: 80px;height: 40px;"/></div>'; msgcontent += '</li> <li><div id="fileList" class="uploader-list clearfix" style="max-height: 300px;overflow: auto;"></div></li></ul>'; //連接添加彈窗 html代碼段↑ dia = $.dialog({ title: '添加專輯圖片', content: msgcontent, fixed: true, min: false, max: false, lock: true, okVal: '肯定', ok: function() { return s;//單擊肯定按鈕時暫不關閉彈出框 }, cancelVal: '取消', cancel: true }); UploadImge();
控件初始化html
//批量上傳圖片 function UploadImge() { $list = $(window.parent.document).find('#fileList'), // 優化retina, 在retina下這個值是2 ratio = window.devicePixelRatio || 1, // 縮略圖大小 thumbnailWidth = 100 * ratio, thumbnailHeight = 100 * ratio, // 初始化Web Uploader uploader = WebUploader.create({ // 自動上傳true/false。 auto: false, // swf文件路徑 swf: '/Portal/Js/Common/diyUpload/js/Uploader.swf', // 內部根據當前運行是建立,多是input元素,也多是flash. pick: $(window.parent.document).find("#ChoosePhoto"), // 只容許選擇文件,可選。 accept: { title: 'Images', extensions: 'gif,jpg,jpeg,bmp,png', mimeTypes: 'image/gif,image/jpg,image/jpeg,image/bmp,image/png' } }); // 當有文件添加進來的時候 uploader.on('fileQueued', function(file) { var filetype = file.name.split('.')[1]; var st = false; switch (filetype) { case "gif": st = true; break; case "jpg": st = true; break; case "jpeg": st = true; break; case "bmp": st = true; break; case "png": st = true; break; default: break; } if (!st) { jsprint('請上傳正確格式的圖片:"gif,jpg,jpeg,bmp,png"!!', '', 'Error'); return false; } $(window.parent.document).find(".ui_state_highlight").unbind("click").bind("click", function() { Tid = $(window.parent.document).find(".typeselectdata option:selected").val(); if (Tid == 0) { jsprint('專輯不能爲空!!', '', 'Error'); return false; } var obj = {}; obj = { op: "uploadphoto", Tyid: Tid, navName: navName }; if (uploader.getFiles("inited").length > 0) { uploader.option("formData", obj); uploader.option("server", "/Ajax/Manage.ashx"); uploader.upload(); } else { jsprint('未選擇任何視頻文件!!', '', 'Error'); return false; } }); var $li = $( '<div id="' + file.id + '" class="file-item thumbnail" style="float: left; margin-left: 5px;">' + '<img>' + '<div class="info">' + file.name + '</div>' + '</div>' ), $img = $li.find('img'); $list.append($li); // 建立縮略圖 uploader.makeThumb(file, function(error, src) { if (error) { $img.replaceWith('<span>不能預覽</span>'); return; } $img.attr('src', src); }, thumbnailWidth, thumbnailHeight); }); // 文件上傳過程當中建立進度條實時顯示。 uploader.on('uploadProgress', function(file, percentage) { var $li = $(window.parent.document).find('#' + file.id), $percent = $li.find('.progress span'); // 避免重複建立 if (!$percent.length) { $percent = $('<p class="progress"><span></span></p>') .appendTo($li) .find('span'); } $percent.css('width', percentage * 100 + '%'); }); // 文件上傳成功,給item添加成功class, 用樣式標記上傳成功。 uploader.on('uploadSuccess', function(file) { $(window.parent.document).find('#' + file.id).addClass('upload-state-done'); }); // 文件上傳失敗,現實上傳出錯。 uploader.on('uploadError', function(file) { var $li = $(window.parent.document).find('#' + file.id), $error = $li.find('div.error'); // 避免重複建立 if (!$error.length) { $error = $('<div class="error"></div>').appendTo($li); } $error.text('上傳失敗'); }); // 完成上傳完了,成功或者失敗,先刪除進度條。 uploader.on('uploadComplete', function(file) { $(window.parent.document).find('#' + file.id).find('.progress').remove(); if (uploader.getFiles().length == uploader.getStats().successNum) {//當上傳成功後從新加載數據 dia.close();//上傳完成時關閉彈出框 BindPhotoes(1, 20);//從新加載數據 } }); }
通常處理程序處理上傳圖片服務器
HttpFileCollection fileCollection = cnt.Request.Files;//獲取客戶端傳來的文件六流 if (fileCollection.Count == 0) { //未接收到文件 //防止發生異常 cnt.Response.Write(JsonHelper.SerializeObject(new { status = false, msg = "你未選中任何圖片" })); return; } System.Drawing.Image img = System.Drawing.Image.FromStream(fileCollection[0].InputStream); //服務器段相對路徑,上傳到相冊所在的文件夾下 string relativePath = "/Upload/PhotoImage/" + usermodel.xj_UserName + "/" + DateTime.Now.ToString("yyyyMM"); strpath = UploadImg(fileCollection, relativePath);//得到文件存儲路徑 if (strpath == "") { cnt.Response.Write(JsonHelper.SerializeObject(new { status = false, msg = "保存圖片發生異常" })); return; }
圖片處理函數app
/// <summary> /// 處理上傳圖片 /// </summary> /// <param name="Id"></param> /// <param name="Gid"></param> /// <returns></returns> private string UploadImg(HttpFileCollection fileCollection, string relativePath) { // 映射到服務器上的物理路徑 string physicalPath = cnt.Server.MapPath(relativePath); if (!Directory.Exists(physicalPath)) { Directory.CreateDirectory(physicalPath); } //以當前時間爲隨機種子 Random rand = new Random(24 * (int)DateTime.Now.Ticks); int fileId = rand.Next(); string ext = fileCollection[0].FileName.Split('.').Last().ToLower(); string fileName = fileId + "." + ext; //保存文件到本地 fileCollection[0].SaveAs(physicalPath + fileName); string filePath = relativePath + fileName; return filePath;//返回縮略圖和原圖保存路徑 }