国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > JavaScript > 正文

JavaScript將base64圖片轉換成formData并通過AJAX提交的實現方法

2019-11-20 08:40:48
字體:
來源:轉載
供稿:網友

之前為了拍攝照片使用了webcam相關的插件,其拍攝后得到的是base64格式的圖片,直接顯示沒問題,在src中直接指定就可以了,但是要上傳到server時問題就來了,server端接收的是標準的文件,也就是html form中type=”file”的形式。想要沿用這個接口不更改server端代碼,于是嘗試將base64直接轉換成標準的fomeData并通過AJAX提交。

第一步,將base64轉換成二進制圖片(Blob)

主要思路是整理一下base64的前面幾個字符,預處理以后轉換成Blob對象,這個之后稍作處理可以放在formData中。

function dataURItoBlob(base64Data) {var byteString;if (base64Data.split(',')[0].indexOf('base64') >= 0)byteString = atob(base64Data.split(',')[1]);elsebyteString = unescape(base64Data.split(',')[1]);var mimeString = base64Data.split(',')[0].split(':')[1].split(';')[0];var ia = new Uint8Array(byteString.length);for (var i = 0; i < byteString.length; i++) {ia[i] = byteString.charCodeAt(i);}return new Blob([ia], {type:mimeString});}

第二步,構建formData

這里需要借助html5的canvas

var blob = dataURItoBlob(imageBase64); // 上一步中的函數var canvas = document.createElement('canvas');var dataURL = canvas.toDataURL('image/jpeg', 0.5);var fd = new FormData(document.forms[0]);fd.append("the_file", blob, 'image.png');

上面的the_file為這個文件的key,等效于input中的name,image.png則是文件名,由于base64的圖片信息是不帶文件名的,所以可以手動指定一個,這個參數是可選的

第三步,使用AJAX提交

為方便,這里使用jQuery的Ajax來演示,上面我們已經構建好了名為fd的formData,直接提交即可

$.ajax({url: 'http://www.example.com/upload',method: 'POST',processData: false, // 必須contentType: false, // 必須dataType: 'json',data: fd,success(data) {console.log(data);}});

以上所述是小編給大家介紹的JavaScript將base64圖片轉換成formData并通過AJAX提交的實現方法,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對武林網網站的支持!

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 台山市| 罗山县| 子长县| 岳阳市| 嘉禾县| 屏东市| 湄潭县| 墨玉县| 蒲江县| 开封县| 綦江县| 乡宁县| 红桥区| 江华| 高平市| 木里| 阳山县| 临泉县| 巴彦淖尔市| 江门市| 新和县| 乐东| 凌源市| 始兴县| 海晏县| 定远县| 麦盖提县| 买车| 衡东县| 德昌县| 丽水市| 汉中市| 新竹市| 乌兰浩特市| 孝义市| 宜昌市| 六安市| 玉门市| 玉门市| 遂宁市| 石柱|