国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

業(yè)務(wù)開發(fā)情境之:文本框的base64編碼圖片粘貼直接上傳七牛

xiao7cn / 2094人閱讀

摘要:我們的功能需要用到的接口事件讀取完成,無(wú)論成功與否,還有方法將文件讀取為。檢測(cè)是否為圖片類型圖片的編碼這里設(shè)置獲取的數(shù)據(jù)獲取后臺(tái)的給的將文件讀取為上傳事件當(dāng)?shù)臅r(shí)候說(shuō)明我們成功的把圖片傳上七牛了,并且七牛給我們返回了一個(gè)字符串。

最近在做的一個(gè)聊天消息的功能。有個(gè)圖片上傳的功能,可以通過(guò)按鈕上傳也可以通過(guò)Ctrl+V上傳。按鈕上傳的我們可以通過(guò)七牛的API就可以做了,我們現(xiàn)在來(lái)說(shuō)說(shuō)Ctrl+V的實(shí)現(xiàn)是怎么樣的。

涉及到的API

FileReader()

paste事件

關(guān)于imageFile,用來(lái)把文件讀入內(nèi)存,并且讀取文件中的數(shù)據(jù)。提供一個(gè)異步的api,使用該api可以在瀏覽器主線程中異步訪問(wèn)文件系統(tǒng),讀取文件中的數(shù)據(jù)。我們的功能需要用到FileReader的接口事件onloadend(讀取完成,無(wú)論成功與否),還有方法readAsDataURL(將文件讀取為DataURL)。關(guān)于FileReader更多的事件和方法感興趣的同學(xué)可以自己去搜索,這里就不深究了。

1.結(jié)構(gòu)

我們用的是textarea這個(gè)標(biāo)簽,為什么不使用div呢,因?yàn)槭沁€有@功能,為了兼容兩種方案。


//獲取id
var textapp = document.getElementById("app");

2.綁定輸入框的paste事件

我們這里的思路是通過(guò)檢測(cè)粘貼的對(duì)象類型,如果是圖片的話就拿到圖片的base64位。并且在圖片被讀取完成的時(shí)候,我們?cè)谌フ?qǐng)求后臺(tái)拿到token。并且在拿到了token后我們就去請(qǐng)求七牛的API。

textapp.addEventListener("paste", function(e){
    for (var i = 0; i < e.clipboardData.items.length; i++) {
        // 檢測(cè)是否為圖片類型
        if (e.clipboardData.items[i].kind == "file" && /image//.test(e.clipboardData.items[i].type)) {
            var imageFile = e.clipboardData.items[i].getAsFile();
            var fileReader = new FileReader();
            fileReader.onloadend = function(e) {
                //圖片的base64編碼
                console.log(e.target.result);
               
                //這里設(shè)置獲取token的數(shù)據(jù)
                var thetoken = "";
                var head = {
                    "cmd": 0x4000C,
                    "uid": parseInt(EXTUID),
                    "ver": 1,
                    "sid": SID,
                    "apptype":1,
                    "entry_type": 2
                    }
                var rdata = {
                    "head":head
                    }
                rdata = JSON.stringify(rdata);
                //獲取后臺(tái)的給的token
                $.post(request_url_server,rdata,function(data,status){
                    if (status == "success") {
                        if (data["ret"] == 0){
                            var thetoken = data["token"];
                            pubt64(e.target.result.replace("data:image/png;base64,",""), imageFile, thetoken);
                        }
                    }
                });
            };
             //將文件讀取為DataUrl
            fileReader.readAsDataURL(imageFile);
            e.preventDefault();
            break;
        }
    }
});
3.上傳事件

當(dāng)xhr.readyState==4的時(shí)候說(shuō)明我們成功的把圖片傳上七牛了,并且七牛給我們返回了一個(gè)json字符串。我們把這個(gè)字符串轉(zhuǎn)化成json對(duì)象,里面包含有圖片的key值,hash值,現(xiàn)在我們就拿到了key把消息發(fā)送給服務(wù)端啦。

function pubt64(pic,imageFile,thetoken){
    //圖片的base64位
    var pic = pic;
    //imageFile.size為圖片流的大小
    var url = "http://upload.qiniu.com/putb64/"+imageFile.size;
    var xhr = new XMLHttpRequest();
    xhr.onreadystatechange = function() {
        if (xhr.readyState==4){
          // 成功
          console.log(xhr.responseText);
          //轉(zhuǎn)換成json對(duì)象,包含key值,hash值。
          var dataImg = JSON.parse(xhr.responseText);
          //發(fā)送給服務(wù)端消息
          sendImg("paste", dataImg);
        }
    }
    xhr.open("POST", url, true);
    xhr.setRequestHeader("Content-Type", "application/octet-stream");
    xhr.setRequestHeader("Authorization", "UpToken "+thetoken);
    xhr.send(pic);
}

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/90818.html

相關(guān)文章

  • Web聊天工具的富文本輸入框

    摘要:由于我們的富文本輸入框比較簡(jiǎn)單,所以只需要處理兩類數(shù)據(jù)即可,其一是普通的文本類型數(shù)據(jù),包括表情其二則是圖片類型數(shù)據(jù)。 最近折騰 Websocket,打算開發(fā)一個(gè)聊天室應(yīng)用練練手。在應(yīng)用開發(fā)的過(guò)程中發(fā)現(xiàn)可以插入 emoji ,粘貼圖片的富文本輸入框其實(shí)蘊(yùn)含著許多有趣的知識(shí),于是便打算記錄下來(lái)和大家分享。 倉(cāng)庫(kù)地址:chat-input-box預(yù)覽地址:https://codepen.io...

    iKcamp 評(píng)論0 收藏0
  • 基于 Github API 的圖床 Chrome 插件開發(fā)全紀(jì)錄

    摘要:最近基于開發(fā)了一款圖床插件,現(xiàn)在已經(jīng)開源并上架應(yīng)用商店。通過(guò)方法把轉(zhuǎn)成,然后放在里測(cè)試一下看來(lái)效果是的,接下來(lái)就是對(duì)圖床插件進(jìn)行開發(fā)的步驟了。至此,整個(gè)插件的開發(fā)發(fā)布流程就已經(jīng)完成了。 showImg(https://user-images.githubusercontent.com/12172868/57382983-8f29b900-71e0-11e9-8fe9-c0f12fd54...

    DoINsiSt 評(píng)論0 收藏0
  • 使用七牛云存儲(chǔ)的一些經(jīng)驗(yàn)總結(jié)

    摘要:原文使用七牛云存儲(chǔ)的一些經(jīng)驗(yàn)總結(jié)錯(cuò)誤處理如果在與七牛的交互中出現(xiàn)狀態(tài)碼為的錯(cuò)誤,一句話,不要猶豫,直接聯(lián)系七牛技術(shù)支持。但是筆者發(fā)現(xiàn),在使用七牛云轉(zhuǎn)化后的視頻,這樣做是無(wú)效的。 近段時(shí)間將使用七牛云存儲(chǔ)來(lái)存放用戶上傳的數(shù)據(jù),客戶端通過(guò)七牛的js-sdk與七牛交互,服務(wù)端C#實(shí)現(xiàn)了七牛相關(guān)的接口。在這過(guò)程中多多少少遇到點(diǎn)問(wèn)題,在這里總結(jié)一下。原文:使用七牛云存儲(chǔ)的一些經(jīng)驗(yàn)總結(jié) 599錯(cuò)...

    Lyux 評(píng)論0 收藏0
  • js實(shí)現(xiàn)圖片粘貼上傳到服務(wù)器并展示

    摘要:如果有錯(cuò)誤,,可通過(guò)下文中的監(jiān)聽函數(shù)拿到該錯(cuò)誤碼進(jìn)行自定義處理是一個(gè)數(shù)組,返回若干圖片的線上地址圖片地址圖片地址參考部分 最近看了一些有關(guān)于js實(shí)現(xiàn)圖片粘貼上傳的demo,實(shí)現(xiàn)如下: (這里只能檢測(cè)到截圖粘貼和圖片右鍵復(fù)制之后粘貼) demo1: document.addEventListener(paste, function (event) { consol...

    imingyu 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<