依賴 彈出 lhdaiglog 基於 webuploader 批量 上傳 圖片 欄目 設計模式 简体版
原文   原文鏈接

初始上傳界面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;//返回縮略圖和原圖保存路徑
        }
相關文章
相關標籤/搜索
每日一句
    每一个你不满意的现在,都有一个你没有努力的曾经。
本站公眾號
   歡迎關注本站公眾號,獲取更多信息