<span id="mktg5"></span>

<i id="mktg5"><meter id="mktg5"></meter></i>

        <label id="mktg5"><meter id="mktg5"></meter></label>
        最新文章專題視頻專題問答1問答10問答100問答1000問答2000關鍵字專題1關鍵字專題50關鍵字專題500關鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關鍵字專題關鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
        問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
        當前位置: 首頁 - 科技 - 知識百科 - 正文

        瀏覽器圖片選擇預覽、旋轉、批量上傳的JS代碼實現_javascript技巧

        來源:懂視網 責編:小采 時間:2020-11-27 21:16:49
        文檔

        瀏覽器圖片選擇預覽、旋轉、批量上傳的JS代碼實現_javascript技巧

        瀏覽器圖片選擇預覽、旋轉、批量上傳的JS代碼實現_javascript技巧:工作中遇到的業務場景,和同事一起研究了下,主要是為了兼容IE版本 其實就是一些瑣碎的知識點在網上搜集下解決方式,然后集成了下,主要有以下點: 1. IE input type=file的圖片預覽要用IE的filter css progid:DXImageTransform.Mic
        推薦度:
        導讀瀏覽器圖片選擇預覽、旋轉、批量上傳的JS代碼實現_javascript技巧:工作中遇到的業務場景,和同事一起研究了下,主要是為了兼容IE版本 其實就是一些瑣碎的知識點在網上搜集下解決方式,然后集成了下,主要有以下點: 1. IE input type=file的圖片預覽要用IE的filter css progid:DXImageTransform.Mic
        工作中遇到的業務場景,和同事一起研究了下,主要是為了兼容IE版本

        其實就是一些瑣碎的知識點在網上搜集下解決方式,然后集成了下,主要有以下點:

        1. IE input type=file的圖片預覽要用IE的filter css

        progid:DXImageTransform.Microsoft.AlphaImageLoader

        chrome/firefox則用File api的file reader

        2. 圖片旋轉,IE用progid:DXImageTransform.Microsoft.Matrix的filter(filter可以組合用,用空格隔開)

        chrome/firefox用canvas

        3. 上傳圖片,我用的都是不可見的iframe 里的form動態的添加input[type=file]去實現。chrome/firefox可以用xhr,但我懶得去修改了

        4. 其中為了實現上傳圖片不刷新本頁面,又能反復選擇文件,所以還用一個iframe專門維護一個input[type=file]的列表,比較偷巧。

        可以參考下代碼,主要是一個主html,然后兩個iframe的html,上傳的服務端返回的數據為上傳成功的file name,用于刪除預覽圖。
        代碼如下:
        // 上傳回調
        // resultList -> ['file1', 'file2'] 為上傳成功的file name
        var uploadCallback = function(resultList){
        console.log(JSON.stringify(resultList));

        var i = 0;
        for(; i < resultList.length; i++){
        var index = resultList[i].substr('file'.length);
        $(':checkbox[value=' + index + ']').parent().parent().remove();
        }
        };

        $(function(){
        // 保存圖片旋轉的角度,以便提交給服務端處理
        var rotateAng = {};
        // 用于命名后綴的序號
        var cc = 0;

        // 如果是chrome/ff,需要用file api去生成img
        var genImgTpl = function(input, index){
        return '';
        };

        var readImgFromInput = function(_input, index){
        var inputDom = _input[0];
        // chrome/ff
        if(inputDom['files']){
        var reader = new FileReader();
        reader.onload = function(e){
        $('img.main:last').attr({src : e.target.result});
        }
        reader.readAsDataURL(inputDom['files'][0]);
        }else{
        var src = _input[0].value;

        var imgDom = $('#img' + index);
        imgDom.attr('src-old', src);
        imgDom.css({
        float: 'left',
        position: 'relative',
        overflow: 'hidden',
        width: '195px',
        height: '195px'
        });

        imgDom.css({'filter': "progid:DXImageTransform.Microsoft.AlphaImageLoader(enabled='true',sizingMethod='scale',src=\"" + src + "\")"});
        }
        };

        var showImg = function(_input){
        var index = ++cc;

        _input.addClass('hide');
        _input.attr('name', 'file' + index);
        _input.attr('data-index', index);

        var iframeWin = $('#choose')[0].contentWindow;
        iframeWin.addInput(_input);

        var tpl = '' + genImgTpl(_input, index) +
        '' +
        '' +
        '';
        $('#imgDiv').append(tpl);

        readImgFromInput(_input, index);
        };
        var addAnother = function(){
        $('#uploadBtn').before('');
        };

        // input[type=file]的綁定事件
        $('#uploadDiv input').live('change', function(){
        var path = this.value;
        if(!path){
        return;
        }

        showImg($(this));
        addAnother();
        });

        // 可以在checkbox時候remove input
        // $('#imgDiv input:checkbox').live('change', function(){
        // var isChecked = $(this).is(':checked');
        // console.log(isChecked);
        // });

        $('#imgDiv span.turn-right').live('click', function(){
        // 上次旋轉的角度
        var index = $(this).siblings('span.choose').find('input').val();
        var oldAng = rotateAng[index] || 0;
        var newAng = oldAng + 90;
        rotateAng[index] = newAng;

        $('#img' + index).rotate(90);
        });

        // 表單提交時候根據checkbox,刪除未choose的input[type=file]
        $('#uploadBtn').click(function(){
        var choosedNum = $('#imgDiv input:checkbox').filter(':checked').length;
        if(!choosedNum){
        alert('請選擇上傳文件!');
        return false;
        }

        // 選中的序號數組
        var choosedIndexList = $('#imgDiv input:checkbox').filter(':checked').map(function(){
        return this.value;
        }).get();

        // 兩個iframe,一個用于保存選擇的input[type=file]
        // 一個用于form upload
        var uploadIframe = $('#upload')[0].contentWindow;
        var chooseIframe = $('#choose')[0].contentWindow;

        var i = 0;
        for(; i < choosedIndexList.length; i++){
        var index = choosedIndexList[i];
        var inputFile = chooseIframe.$('#uploadDiv input').filter('[data-index=' + index + ']');
        uploadIframe.$('#uploadForm').append(inputFile);

        // 旋轉度數
        var ang = rotateAng[index] || 0;
        if(ang % 360 != 0){
        var tplInput = '';
        uploadIframe.$('#uploadForm').append(tplInput);
        }
        }

        uploadIframe.doUpload();

        return false;
        });
        });

        IE7、8、9和chrome中測試沒有問題

        聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

        文檔

        瀏覽器圖片選擇預覽、旋轉、批量上傳的JS代碼實現_javascript技巧

        瀏覽器圖片選擇預覽、旋轉、批量上傳的JS代碼實現_javascript技巧:工作中遇到的業務場景,和同事一起研究了下,主要是為了兼容IE版本 其實就是一些瑣碎的知識點在網上搜集下解決方式,然后集成了下,主要有以下點: 1. IE input type=file的圖片預覽要用IE的filter css progid:DXImageTransform.Mic
        推薦度:
        標簽: 圖片 旋轉 代碼
        • 熱門焦點

        最新推薦

        猜你喜歡

        熱門推薦

        專題
        Top
        主站蜘蛛池模板: 久久久久久99av无码免费网站 | 最近的中文字幕大全免费版| 亚洲精品国产字幕久久不卡| AAA日本高清在线播放免费观看| 久久国产成人精品国产成人亚洲 | 日韩免费视频一区二区| 亚洲精品无码鲁网中文电影| 国内精品免费久久影院| 亚洲国产AV无码专区亚洲AV| 污视频在线观看免费| 亚洲校园春色小说| 成人午夜免费福利| 免费国产黄网站在线观看动图| 国产公开免费人成视频| 国产大片免费天天看| 91亚洲导航深夜福利| AV免费网址在线观看| caoporm碰最新免费公开视频| 亚洲人成77777在线播放网站| 99xxoo视频在线永久免费观看| xvideos永久免费入口| 中文亚洲AV片不卡在线观看| 午夜精品一区二区三区免费视频| 亚洲午夜电影在线观看| 国产精品免费一级在线观看| 精品国产污污免费网站入口在线 | 亚洲ⅴ国产v天堂a无码二区| 日日麻批免费40分钟日本的| 亚洲精品宾馆在线精品酒店| 国产AV无码专区亚洲AV漫画| 亚洲视频在线观看免费视频| 亚洲国产一区二区三区在线观看| 国产亚洲色婷婷久久99精品91| 最近2019免费中文字幕6| 亚洲精品高清国产一线久久| 999国内精品永久免费视频| 免费VA在线观看无码| 亚洲精品资源在线| 亚洲精品无码AV中文字幕电影网站 | 在线免费视频一区二区| 中文字幕不卡免费高清视频|