JS - 如何上传 Base64 编码的图片

简介: 本文展示了如何将Base64编码的图片在前端转换为Blob对象,并使用`FormData`上传到服务器端的方法。

偶尔遇到服务端传图片给前端只能是字符串,且前端获取到图片之后还需要上传到服务端的需求,记录一下。

示例代码:index.html

<!DOCTYPE html>
<html>
<head>
    <title>Document</title>
</head>
<body>
    <h1>JS 如何上传 Base64 编码的图片</h1>
</body>
<script type="text/javascript">
    // Base64 编码的图片字符串
    const base64String = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAA...';

    // 验证 Base64 编码的图片是否可显示
    const base64Img = document.createElement('img');
    base64Img.src = base64String;
    document.body.appendChild(base64Img);

    // Base64 编码的图片转成二进制图片
    const byteString = window.atob(base64String.split(',')[1]);
    const mimeString = base64String.split(',')[0].split(':')[1].split(';')[0];
    const ab = new ArrayBuffer(byteString.length);
    const ia = new Uint8Array(ab);
    for (let i = 0; i < byteString.length; i++) {
    
        ia[i] = byteString.charCodeAt(i);
    }
    const blob = new Blob([ab], {
     type: mimeString });

     // 验证二进制图片是否可显示
    const url = URL.createObjectURL(blob);
    const blobImg = document.createElement('img');
    blobImg.src = url
    document.body.appendChild(blobImg);

     // 上传图片
    const formData = new FormData()
    formData.append('file', blob, 'image.png')
    fetch('/upload', {
    
      method: 'POST',
      body: formData
    })
    .then(response => {
    
      console.log('上传成功', response);
    })
    .catch(error => {
    
      console.error('上传失败', error);
    });
</script>
</html>
目录
相关文章
|
5月前
|
前端开发 JavaScript 容器
制作b超单生成器, 假怀孕b超单图片制作, p图医院证明【css+html+js装逼恶搞神器】
本资源提供一个适合用于熟人之间恶搞的工具,效果逼真,仅供学习参考与娱乐。包含前端技术学习要点:语义化布局、响应式设计、Flexbox、图片自适应
|
存储 JavaScript 前端开发
JS上传文件(base64字符串和二进制文件流)
这篇文章介绍了两种JavaScript文件上传的方法:使用FileReader对象将文件读取为base64字符串上传,以及使用FormData对象以二进制文件流的形式上传文件,包括如何处理文件选择、读取和上传的详细代码示例。
1358 2
JS上传文件(base64字符串和二进制文件流)
|
前端开发 JavaScript API
使用 JavaScript 实现图片上传
使用 JavaScript 实现图片上传
371 1
|
10月前
|
移动开发 JavaScript 前端开发
【Html.js——图片折叠效果】折叠手风琴(蓝桥杯真题-1763)【合集】
本项目实现了一个图片折叠手风琴效果,使用jQuery完成。主要包括以下部分: - **介绍**:任务是通过点击图片实现折叠和展开的效果。 - **准备**:内置初始代码,包含 `css/style.css`、`images/` 文件夹、`js/` 文件夹及 `index.html` 等文件。启动 Web Server 服务可运行项目。 - **目标**:完善 `index.js` 文件,使页面达到预期的折叠效果。 - **规定**:严格按步骤操作,保持默认文件结构不变,并在完成后保持 Web 服务正常访问状态。 - **通关代码**:使用 jQuery 实现点击事件,为选中元素添加 `act
138 19
|
11月前
|
JavaScript 容器
带方向感知功能的js图片遮罩层插件
带方向感知功能的js图片遮罩层插件
|
JavaScript 前端开发
【原创】用JavaScript动态获取网页中缩放图片的长度、宽度和显示比例
【原创】用JavaScript动态获取网页中缩放图片的长度、宽度和显示比例
|
JavaScript 前端开发 网络架构
JavaScript编码之路【对象的增强、ES6新特性之函数的默认值设置 、rest参数 (剩余参数)、拓展运算符、对象与数组的解构赋值】
JavaScript编码之路【对象的增强、ES6新特性之函数的默认值设置 、rest参数 (剩余参数)、拓展运算符、对象与数组的解构赋值】
145 1
|
存储 JavaScript 前端开发
JavaScript编码之路【ES6新特性之 Symbol 、Set 、Map、迭代器、生成器】(二)
JavaScript编码之路【ES6新特性之 Symbol 、Set 、Map、迭代器、生成器】(二)
150 1
js中readAsDataURL的意思,可以用于浏览器预览图像文件或者转成base64字符串
js中readAsDataURL的意思,可以用于浏览器预览图像文件或者转成base64字符串
js中readAsDataURL的意思,可以用于浏览器预览图像文件或者转成base64字符串