在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問答/HTML5  HTML/ 本地圖片上傳服務(wù)器轉(zhuǎn)base64

本地圖片上傳服務(wù)器轉(zhuǎn)base64

本地選擇圖片然后通過ajax上傳服務(wù)器,不想用form表單,用h5的fileReader報錯,怎么解決

轉(zhuǎn)換的代碼

convertToBase64() {
    let fileReader = new FileReader()
    //最大上傳2m的圖片
    const AllowImgFileSize = 2100000
    let imgUrlBase64;

    imgUrlBase64 = fileReader.readAsDataURL('https://img.alicdn.com/bao/uploaded/TB1qimQIpXXXXXbXFXXSutbFXXX.jpg')
    fileReader.onloadend = function() {
      if (AllowImgFileSize != 0 && AllowImgFileSize < fileReader.result.length) {
        alert( '上傳失敗,請上傳不大于2M的圖片!')
        return
      }else{
        console.log(imgUrlBase64)
        //執(zhí)行上傳操作
        console.log(fileReader.result);
      }
    }
  }

現(xiàn)在是傳死了一個在線的圖片地址,實際是input(type=file)獲取到的值

clipboard.png

傳這兩種值都報錯

clipboard.png

真的不知道怎么解決,第一次用fileReader。
這個是最簡單的,還有沒有別的簡單可行的方法。用的是react框架

回答
編輯回答
苦妄
本地選擇圖片然后通過ajax上傳服務(wù)器,不想用form表單

上傳圖片還真的只能用multipart/form-data,就是你所說的form表單。因為其他body通常收長度限制,你想用base64發(fā)必須讓后臺支持你的長度,而如果在同時被body足夠長的報文攻擊直接GG。

事實上你在input=file選中文件返回的就是File,通過FormData接口用ajax傳上去就好了,而其他方式你根本獲取不了本地圖片,你的例子是想通過遠程圖片服務(wù)器1去上傳到遠程圖片服務(wù)器2么?如果你真是要做這件事倒可以轉(zhuǎn)成blob再按前面說的方式上傳。(奇怪的需求)

2018年7月7日 12:59
編輯回答
冷溫柔

readAsDataURL()的參數(shù)不是一個字符串的url吧,應(yīng)該是一個blob或者file對象。個人感覺應(yīng)該用xhr先獲取到真正的圖片文件

2017年1月7日 11:50
編輯回答
伴謊

你讀取本地文件怎么會拿到一個服務(wù)器的文件路徑呢? fileReader基于Blob實現(xiàn),只能讀取Blob://類型的文件, 用戶選擇完本地文件你拿到的也是Blob類型. 你這里的問題就是路徑的問題

2017年4月25日 07:37