前端读取文件图片信息流;js读取图片不同信息流;js读取图片;前端就js读取二进制数据;前端js读取文件流使用FileReader对象的readAsDataURL方法来读取图像文件;

原文链接

FileReader来把文件读入内存,并且读取文件中的数据。
readAsDataURL方法可以在浏览器主线程中异步访问文件系统,读取文件中的数据,且读取后 result 为 DataURL,
DataURL 可直接 赋值给 img.src。

FileReader 的 result 可以有 3 种形式, 它取决于具体调用读取的方法:

–1.1调用 reader. readAsArrayBuffer, 则 result 为 ArrayBuffer 对象 调用 reader.
–1.2 readAsText, 则 result 为 字符串 调用reader. readAsDataURL, 则 result 为
–1.3DataURL, DataURL 可直接 赋值给 img.src 调试发现 DataURL 是带头信息(/image) 的
base64(可能是) 编码的字符串

以下代码可直接复制:

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><title>Title</title>
</head><body><p><label>请选择一个文件:</label><input type="file" id="file" /><input type="button" value="读取图像" onclick="readAsDataURL()" /><input type="button" value="读取二进制数据" onclick="readAsBinaryString()" /><input type="button" value="读取文本文件" onclick="readAsText()" /></p><div id="result" name="result"></div><script type="text/javascript">var result = document.getElementById("result");var file = document.getElementById("file");//判断浏览器是否支持FileReader接口if (typeof FileReader == 'undefined') {result.InnerHTML = "<p>你的浏览器不支持FileReader接口!</p>";//使选择控件不可操作file.setAttribute("disabled", "disabled");}function readAsDataURL() {//检验是否为图像文件var file = document.getElementById("file").files[0];if (!/image\/\w+/.test(file.type)) {alert("看清楚,这个需要图片!");return false;}var reader = new FileReader();//将文件以Data URL形式读入页面reader.readAsDataURL(file);// reader.onload = function (e) {//   var result = document.getElementById("result");//   //显示文件//   result.innerHTML = '<img src="' + this.result + '" alt="" />';// }reader.onload = function (e) {result.innerHTML = '' //清除其他内容var txt = e.target.result;var img = document.createElement("img");img.src = txt; //将图片base64字符串赋值给img的srcdocument.getElementById("result").appendChild(img);console.log(document.getElementById("result"), img);};}function readAsBinaryString() {var file = document.getElementById("file").files[0];var reader = new FileReader();//将文件以二进制形式读入页面reader.readAsBinaryString(file);reader.onload = function (f) {var result = document.getElementById("result");//显示文件result.innerHTML = this.result;}}function readAsText() {var file = document.getElementById("file").files[0];var reader = new FileReader();//将文件以文本形式读入页面reader.readAsText(file);reader.onload = function (f) {var result = document.getElementById("result");//显示文件console.log(this);result.innerHTML = this.result;}}</script></body></html>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/403377.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【转】LAMP网站架构方案分析【精辟】

【转】LAMP网站架构方案分析【精辟】 http://www.cnblogs.com/mo-beifeng/archive/2011/09/13/2175197.htmlXubuntu下LAMP环境安装(最佳的PHP环境搭建) http://www.cnblogs.com/mo-beifeng/archive/2011/08/13/2137605.html 转载于:https://www.cnblogs.com/bravehunter/p/5709…

有源晶振和无源晶振的区别

1、晶振在电路中就相当于人的一个心脏&#xff0c;晶振为电路提供了一个时钟信号。有源晶振比较贵&#xff0c;但是有源晶振自身就能震动。而无论是无源晶振&#xff0c;还是有源晶振&#xff0c;都有自身的优点和缺点所在&#xff0c;若考虑产品成本&#xff0c;建议可以选择无…

免费设计图标的网站;免费设计的网站;免费设计的网站;

链接1&#xff1a;canva设计logo和图标 链接2&#xff1a;包图网 可以自行设计、编辑、下载logo图标海报等

介绍Linux中cp直接覆盖不提示的方法

From: http://www.php100.com/html/webkaifa/Linux/2011/0220/7570.html 新做了服务器&#xff0c;cp覆盖时&#xff0c;无论加什么参数-f之类的还是提示是否覆盖&#xff0c;这在大量cp覆盖操作的时候是不能忍受的。把a目录下的文件复制到b目录以下是代码片段&#xff1a;cp …

路由的Modem信号控制

中低端路由器上使用disp interface 查看相应串口状态信息&#xff0c;其中DCD、DTR、DSR、RTS及CTS等五个状态指示分别代表什么意思&#xff1f; DCD&#xff08;Data Carrier Detect 数据载波检测&#xff09; DTR&#xff08;Data Terminal Ready 数据终端准备好&#xff09;…

项目回顾1-图片上传-form表单还是base64-前端图片压缩

第一个项目终于上线了&#xff0c;是一个叫亲青筹的公益众筹平台&#xff0c;微信端&#xff0c;电脑端还有后台界面大部分都是我完成的&#xff0c;几个月过来&#xff0c;感觉收获了很多&#xff0c;觉得要总结一下。 首先想到的是图片上传的问题。在通常表单数据都是ajax上传…

4.6 【共享源】流的生产者(一)

一,什么是生产者? 生产者创建内容并与有权限的消费者共享。 作为生产者,必须相应地设置流以供消费。通常,我们需要在生产者应用程序中执行接下来的流程来共享产生的内容。 二,创建生产者的流 调用 screen_create_stream() 为生产者创建流以进行渲染。例如 ... screen…

vue路由传参两种方式;vue路由传参query与params区别;vue路由跳转的带参与不带参,路由跳转传参方式:name 、 path;

vue项目的路由传参常用的有两种方式&#xff1a;query和params 1.query传参特点&#xff1a;1.1可以用path也可以用name传递路径 注意name是路由页面vue文件的名称 不需要/1.2跳转页面地址栏可以看到路径和参数 通过 this.$route.query.id 可以获取到参数1.3刷新不会丢失参数t…

Qt下Undefined reference to 'vtable for xxx'

QT下遇到这种错误提示时候需要注意以下情况&#xff1a; 一、cpp文件里使用了Q_OBJECT 分析&#xff1a;qmake不会处理.cpp文件里的Q_OBJECT&#xff0c;所以如果在.cpp文件中有它的话将会产生undefined reference to vtable for "xxx::xxx"。 方法1&#xff1a;…

Realtek网卡如何识别具体型号是8111B/8111C/8111D还是8111E???

From: http://support.icafe8.com/technologynews/focus/1347.html 貌似在去年&#xff0c;Realtek网卡把型号都统一为Realtek GBE什么什么的这种名字&#xff0c;这个修改说实话&#xff0c;对有盘没啥影响&#xff0c;只要驱动装好&#xff0c;能上网就ok了&#xff0c;但是…

【leetcode77】Single Number

一题目描述&#xff1a; 给定一个数组&#xff0c;只有一个数字出现一次&#xff0c;其余都是两次&#xff0c;判断那个数字 思路&#xff1a; 不断取出数据进行异或&#xff0c;最后一个数字&#xff0c;因为相同的数字会抵消代码&#xff1a; public class Solution {public …

qDebug格式化输出类型

%a,%A——读入一个浮点值(仅C99有效)    %c——读入一个字符    %d——读入十进制整数    %i——读入十进制&#xff0c;八进制&#xff0c;十六进制整数    %o——读入八进制整数    %x,%X——读入十六进制整数    %s——读入一个字符串&#xff0c;遇空格、制…

linux服务器上jfreeChar乱码问题

更新服务器字体和jdk字库utf-8。

css的px、rpx、em、rem、vw、vh、vmin、vman的区别

px:绝对单位 1px在哪里长度都是一样 rpx&#xff1a;相对单位 微信小程序引入rpx单位 在屏幕像素基准为375物理像素的屏幕上 1rpx 1px 例如iph6是屏幕宽度是375px 750物理像素 那么在上1rpx 375/750px0.5px em&#xff1a;相对单位 基准点是父节点字体font-size大小 rem&…

mac系统如何显示和隐藏文件

From: http://www.cnblogs.com/lm3515/archive/2010/12/08/1900271.html 苹果Mac OS X操作系统下&#xff0c;隐藏文件是否显示有很多种设置方法&#xff0c;最简单的要算在Mac终端输入命令。显示/隐藏Mac隐藏文件命令如下(注意其中的空格并且区分大小写)&#xff1a;显示Mac隐…

数制转换

进制的转换可以借助强大的BigInteger&#xff0c;非常的方便。 new java.math.BigInteger(num, from).toString(to); 表示num要转换的数从from源数的进制 转换成to的进制。 题目描述 求任意两个不同进制非负整数的转换&#xff08;2进制&#xff5e;16进制&#xff09;&#xf…

QString与char *之间的转换

1. 在 Qt 下将 QString 转 char* 需要用到 QByteArray 类&#xff0c;QByteArray 类的说明详见Qt帮助文档。因为 char* 最后都有一个‘/0’作为结束符&#xff0c;而采用 QString::toLatin1() 时会在字符串后面加上‘/0’。Exp : Qstring str "helloworld"; char …

Remoting-1

什么是Remoting&#xff0c;简而言之&#xff0c;我们可以将其看作是一种分布式处理方式。从微软的产品角度来看&#xff0c;可以说Remoting就是DCOM的一种升级&#xff0c;它改善了很多功能&#xff0c;并极好的融合到.Net平台下。Microsoft .NET Remoting 提供了一种允许对象…

斐波那契数列;递归函数;爬楼梯问题;

斐波那契数列&#xff1a; 例如&#xff1a;一个人爬楼梯&#xff0c;每次只能爬1个或两个台阶&#xff0c;假设有n个台阶&#xff0c;那么这个人有多少种不同的爬楼梯方法&#xff1b; 1阶楼梯&#xff1a;1种方法 2阶楼梯&#xff1a;2种方法 3阶楼梯&#xff1a;3种方法 4阶…

QString包含中文时与char *转换

方法1&#xff1a; 添加GBK编码支持&#xff1a; #include <QTextCodec>QTextCodec::setCodecForTr(QTextCodec::codecForName("GBK")); QTextCodec::setCodecForLocale(QTextCodec::codecForName("GBK"));QString str; char *ch; QByteArray ba …