通過圖片地址,將圖片處理成base64,使用ajax上傳圖片
需求
群裡的一個小朋友一直要求我幫他實現以下,我就寫了一個案例。需求就是,他用canvas生成了一個base64格式的圖片,然後需要將這個圖片上傳到伺服器上面去。
程式碼
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
<script src="http://libs.baidu.com/jquery/2.0.0/jquery.min.js"></script>
</head>
<body>
<img src="xwz.jpg" alt="" id="img">
</body>
<script>
let img = document.querySelector("#img");
img.onload = function () {
//建立formdata物件
var formdata = new FormData();
//獲取圖片的base64格式
var data = imgSrcToBase64(img);
//將獲取的base64格式圖片轉換為圖片檔案物件
var imgFile = convertBase64UrlToBlob(data);
//將檔案新增到formdata裡面
formdata.append("file",imgFile);
$.ajax({
url: "http://localhost:3000/map",
type:"post",
data:formdata,
processData: false, // 不處理資料
contentType: false , // 不設定內容型別
success:function (e) {
console.log(e);
}
});
};
/**
* 將以base64的圖片url資料轉換為Blob
* @param urlData
* 用url方式表示的base64圖片資料
*/
function convertBase64UrlToBlob(urlData){
var bytes=window.atob(urlData.split(',')[1]); //去掉url的頭,並轉換為byte
//處理異常,將ascii碼小於0的轉換為大於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'});
}
//將圖片轉為base64格式
function imgSrcToBase64(img) {
var canvas = document.createElement("canvas");
canvas.width = img.width;
canvas.height = img.height;
var ctx = canvas.getContext("2d");
ctx.drawImage(img,0,0,img.width,img.height);
return canvas.toDataURL();
}
</script>
</html>
由於自己沒有base64格式的圖片,所以現成將一張圖片轉成了base64格式。然後再將其轉換成二進位制的格式,放入到formdata物件內,直接將formdata使用ajax上傳。
相關文章
- 圖片上傳及圖片處理
- 上傳圖片生成base64
- JS base64 圖片上傳JS
- vue+element 將圖片壓縮並轉換成base64上傳圖片Vue
- element上傳圖片元件使用方法|圖片回顯|格式轉換base64元件
- 上傳圖片
- 圖片線上轉base64,base64線上轉圖片-線上助手
- 通過API介面實現圖片上傳API
- Android圖片Base64加密+文字上傳Android加密
- java,springboot + thymeleaf 上傳圖片、刪除圖片到伺服器、本地,壓縮圖片上傳(有些圖片會失真),原圖上傳JavaSpring Boot伺服器
- vue 上傳圖片進行壓縮圖片Vue
- Laravel 使用 FastDFS 上傳圖片LaravelAST
- 上傳圖片jsJS
- 裁剪上傳圖片
- electron上傳圖片
- VueQuillEditor富文字上傳圖片-非base64VueUI
- 圖片 base64 編碼還原成圖片
- 上傳圖片 以及做成縮圖
- 日常筆記三:將base64的圖片上傳到本地筆記
- 拖拽上傳如何獲取到圖片的base64
- 測試圖片上傳
- spring boot 圖片上傳Spring Boot
- 本地Markdown上傳圖片
- 多圖片formpost上傳ORM
- input file圖片上傳
- PbootCMS上傳圖片變模糊、上傳圖片尺寸受限的解決方案boot
- .Net 圖片縮圖上傳通用方法
- Ueditor上傳圖片自動新增水印(通用圖片檔案)
- 前端的圖片壓縮image-compressor(可在圖片上傳前實現圖片壓縮)前端
- SpringMVC實現ajax上傳圖片實時預覽SpringMVC
- 前端手勢控制圖片外掛書寫四(圖片上傳及Ios圖片方向問題)前端iOS
- koa 圖片上傳詳解
- wangEditor上傳圖片問題
- laravel 上傳附件-不是圖片--Laravel
- Typora上傳圖片設定
- js上傳圖片壓縮JS
- 圖片上傳方案詳解
- Vue圖片裁剪上傳元件Vue元件
- vue圖片預覽上傳Vue