<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    posts - 1,  comments - 3,  trackbacks - 0
    直接提交base64編碼圖片數(shù)據(jù),過大的話后臺(tái)會(huì)出現(xiàn)轉(zhuǎn)發(fā)錯(cuò)誤問題。
    一個(gè)不錯(cuò)的解決方式就是將base64編碼的圖片數(shù)據(jù)轉(zhuǎn)換為Blob(與File相似)并添加到form中提交。下面是代碼:

    /**
     * @param base64Codes
     *            圖片的base64編碼
     
    */
    function sumitImageFile(base64Codes){
        var form=document.forms[0];
        
        var formData = new FormData(form);   //這里連帶form里的其他參數(shù)也一起提交了,如果不需要提交其他參數(shù)可以直接FormData無參數(shù)的構(gòu)造函數(shù)
        
        //convertBase64UrlToBlob函數(shù)是將base64編碼轉(zhuǎn)換為Blob
        formData.append("imageName",convertBase64UrlToBlob(base64Codes));  //append函數(shù)的第一個(gè)參數(shù)是后臺(tái)獲取數(shù)據(jù)的參數(shù)名,和html標(biāo)簽的input的name屬性功能相同
        
        //ajax 提交form
        $.ajax({
            url : form.action,
            type : "POST",
            data : formData,
            dataType:"text",
            processData : false,         // 告訴jQuery不要去處理發(fā)送的數(shù)據(jù)
            contentType : false,        // 告訴jQuery不要去設(shè)置Content-Type請(qǐng)求頭
            
            success:function(data){
                window.location.href="${ctx}"+data;
            },
            xhr:function(){            //在jquery函數(shù)中直接使用ajax的XMLHttpRequest對(duì)象
                var xhr = new XMLHttpRequest();
                
                xhr.upload.addEventListener("progress", function(evt){
                    if (evt.lengthComputable) {
                        var percentComplete = Math.round(evt.loaded * 100 / evt.total);  
                        console.log("正在提交."+percentComplete.toString() + '%');        //在控制臺(tái)打印上傳進(jìn)度
                    }
                }, false);
                
                return xhr;
            }
            
        });
    }

    /**
     * 將以base64的圖片url數(shù)據(jù)轉(zhuǎn)換為Blob
     * @param urlData
     *            用url方式表示的base64圖片數(shù)據(jù)
     
    */
    function convertBase64UrlToBlob(urlData){
        
        var bytes=window.atob(urlData.split(',')[1]);        //去掉url的頭,并轉(zhuǎn)換為byte
        
        //處理異常,將ascii碼小于0的轉(zhuǎn)換為大于0
        var ab = new ArrayBuffer(bytes.length);
        var ia = new Uint8Array(ab);
        for (var i = 0; i < bytes.length; i++) {
            ia[i] = bytes.charCodeAt(i);
        }

        return new Blob( [ab] , {type : 'image/png'});
    }

    上面的代碼在chrome中測(cè)試通過,其他瀏覽器未測(cè)試。
    @Author :zlong


    @Source:
    @Author:zlong
    posted on 2013-11-10 01:29 jidebingfeng 閱讀(24492) 評(píng)論(3)  編輯  收藏


    FeedBack:
    # re: javascript將base64編碼的圖片數(shù)據(jù)轉(zhuǎn)換為file并提交[未登錄]
    2016-02-23 16:05 | aa
    轉(zhuǎn)blob 不兼容怎么做?  回復(fù)  更多評(píng)論
      
    # re: javascript將base64編碼的圖片數(shù)據(jù)轉(zhuǎn)換為file并提交
    2016-04-22 14:26 | Rhine
    太棒了,試了好多方法,終于看到這個(gè)了!感謝  回復(fù)  更多評(píng)論
      
    # re: javascript將base64編碼的圖片數(shù)據(jù)轉(zhuǎn)換為file并提交
    2016-08-16 15:23 | njbble

    只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


    網(wǎng)站導(dǎo)航:
     
    <2025年5月>
    27282930123
    45678910
    11121314151617
    18192021222324
    25262728293031
    1234567

    常用鏈接

    留言簿

    隨筆分類

    隨筆檔案

    文章檔案

    搜索

    •  

    最新評(píng)論

    主站蜘蛛池模板: 成年女人毛片免费播放人| 青青草原1769久久免费播放| 亚洲一区二区三区国产精华液| 亚洲综合伊人制服丝袜美腿| 国产精品亚洲综合久久| 免费无码午夜福利片69| 一个人看的在线免费视频| 久久久精品免费视频| 91青青青国产在观免费影视| 在线jyzzjyzz免费视频| 亚洲伊人久久成综合人影院| 亚洲天堂男人天堂| 亚洲第一街区偷拍街拍| 四虎影视在线影院在线观看免费视频 | 亚洲精品无码永久在线观看你懂的| 久久亚洲精品AB无码播放 | 国产亚洲sss在线播放| 成人福利免费视频| 亚洲中文字幕无码一区二区三区 | 在线永久看片免费的视频| 亚洲永久中文字幕在线| 一级免费黄色毛片| 亚洲视频一区二区| 国产免费一区二区视频| 日本高清色本免费现在观看| 亚洲高清在线播放| 日本在线高清免费爱做网站| 亚洲av永久无码精品网址| 免费国产午夜高清在线视频 | 亚洲av成人片在线观看| 青青青免费国产在线视频小草| 一级毛片免费播放视频| 亚洲AV无码成人专区| a毛片基地免费全部视频| 最新国产精品亚洲| 久热综合在线亚洲精品| 美女被cao免费看在线看网站| a毛片免费在线观看| 亚洲成A人片在线观看无码不卡| 免费无码毛片一区二区APP| 亚洲一区二区三区免费观看|