只为小站
首页
域名查询
文件下载
登录
js实现把图片的绝对路径转为base64字符串、
blob对象
再上传
在JavaScript中,将图片的绝对路径转换为base64字符串或
blob对象
,是常见的图片上传前的预处理步骤。这通常用于将用户选择的本地图片数据化,以便于通过Ajax方式上传到服务器,同时可以避免跨域问题。下面将详细阐述这个过程。 首先,将图片的绝对路径转换为base64字符串,主要依赖于HTML5的`
`元素的`toDataURL()`方法。这个方法可以将画布的内容转换为一个data URL,即base64编码的字符串,可以直接作为`
`标签的`src`属性使用。下面是一个简单的示例: ```javascript function getBase64Image(imgPath, width, height) { var img = new Image(); img.src = imgPath; var canvas = document.createElement('canvas'); var ctx = canvas.getContext('2d'); // 确保图片加载完成 img.onload = function() { canvas.width = width || img.width; canvas.height = height || img.height; ctx.drawImage(img, 0, 0, canvas.width, canvas.height); var dataURL = canvas.toDataURL(); return dataURL; }; return img; } // 使用示例 getBase64('img/1.jpg').then(function(base64String) { console.log(base64String); }, function(err) { console.log(err); }); ``` 在这个例子中,`getBase64Image`函数接收图片路径、宽度和高度作为参数。它创建一个新的`Image`对象并设置其`src`属性为图片路径。当图片加载完成后,利用`canvas`绘制图片并调用`toDataURL`获取base64字符串。 如果图片位于不同的源(例如,跨域),浏览器出于安全考虑,会阻止在`canvas`上操作这些图片。为了解决这个问题,你可以将图片放在本地服务器下,以避免跨域问题。如示例中的`var imgSrc = "img/1.jpg";`,这样图片就在同一个源下,不会触发跨域错误。 除了base64字符串,还可以将图片转换为
blob对象
。
blob对象
是二进制大型对象,适用于处理大量数据。转换过程如下: ```javascript function imageToBlob(base64String) { return fetch(base64String.replace('data:image/jpeg;base64,', '')) .then(response => response.blob()); } // 使用示例 getBase64('img/1.jpg').then(base64String => { imageToBlob(base64String).then(blob => { // 上传
blob对象
uploadImage(blob); }); }, function(err) { console.log(err); }); ``` 在这个例子中,`imageToBlob`函数首先将base64字符串转换为fetch请求,然后将响应体转换为
blob对象
。最后,可以将这个
blob对象
通过Ajax或其他异步方法上传到服务器。 总结起来,JavaScript中处理图片上传的过程通常包括以下步骤: 1. 获取图片的绝对路径。 2. 将图片路径转换为`Image`对象。 3. 使用`canvas`绘制图片并获取base64字符串或
blob对象
。 4. 上传base64字符串或
blob对象
到服务器。 确保处理过程中遵循同源策略,必要时将图片放在本地服务器,以避免跨域问题。同时,对于大文件,使用
blob对象
上传可能更高效,因为它允许分块传输。
2024-06-22 20:55:03
51KB
图片上传
1
javascript使用
Blob对象
实现的下载文件操作示例
主要介绍了javascript使用
Blob对象
实现的下载文件操作,结合实例形式分析了javascript使用
Blob对象
下载文件相关原理、操作技巧与注意事项,需要的朋友可以参考下
2022-04-19 14:58:14
295KB
javascript
Blob对象
下载文件
1
Java从数据库中读取
Blob对象
图片并显示的方法
主要介绍了Java从数据库中读取
Blob对象
图片并显示的方法,实例分析了Java读取数据库中
Blob对象
图片的技巧与操作方法,需要的朋友可以参考下
2021-11-30 17:18:05
66KB
Java
数据库
读取
Blob对象
1
个人信息
点我去登录
购买积分
下载历史
恢复订单
热门下载
QT自制精美Ui模板系列(一)桃子风格模板 - 二次开发专用
Autojs 例子 源码 1600多个教程源码
Vivado license 永久
多目标优化算法(四)NSGA3的代码(MATLAB)
新型冠状病毒疫情_2020年东三省数学建模A题_论文展示
简易示波器-精英板.zip
MAC OS.X.10.8.iso 镜像文件
2019和2021年华为单板通用硬件笔试题及答案
2019年秋招—华为硬件工程师笔试题目.pdf
opcua服务器模拟器+opcua客户端工具.rar
DBSCAN算法Matlab实现
Matpower中文使用手册(原名《MATPOWER手册(中文版)》).rar
2020年数学建模国赛C题论文
房价预测的BP神经网络实现_python代码
模型预测控制MPC(模型预测电流控制,MPCC)的simulink仿真,2016b版本
最新下载
01 C语言课件+板书+代码【比特就业课】.zip
【樵夫教你学Python】Python全套教程 Python基础
群辉nastool-2.9.1-x64-DSM7.spk
The Object Primer, Third Edition
chrome谷歌浏览器离线安装包,版本124.0.6367.208
技嘉主板h61-ds2 v2.2网吧版bios f9
技嘉H61M-DS2REV2.2 F9 BIOS
H61M-DS2 REV2.1 BIOS
源码篇:c语言课设-校园跳蚤市场
Flexlm_sdk_11.9_x64
其他资源
Unity3D 使用Vuforia Vuforia Engine 8.0发布AR视频播放
Demo:ArcEngine简单教程——数据属性:属性表、识别(Identify);删除图层 等功能实现
飞思卡尔功率管MRF9045N的模型库
Virtual Breadboard 4.3.8
《MySQL 从入门到项目实践》.txt
捷联惯导解算
整合spring框架的jar包
LENOVO/联想 启天M7150 升级BIOS 版本90KT22C
基于安卓的家庭理财通
库存管理系统 数据库课程设计
MC9s12单片机AD16库
From SQL Injection to Shell学习笔记
MSChart实时曲线
Java面试宝典2016版 高清完整PDF版
3.2.工具栏添加图标_教程之家jczhijia.com.avi
简书练习代码Demo
RDCMan.zip
MATLAB源码集锦-蚁群算法求解TSP问题matlab代码
C语言编程实验sy4-3.c
手把手教你学 CAN 总线 来清民国 高清扫描版,经过OCR处理可复制
w3cschool菜鸟教程【终极离线版】适合新手高清完整PDF版