S.C. Corinthians Fan Token中文网 首页 FTT中文网

领取MOLI红包

JavaScript中文件流的处理场景及方法

发布日期:2025-01-03 18:25    点击次数:202
常见场景 一、input框上传文件 带有 type="file"  的 <input> 元素允许用户可以从他们的设备中选择一个或多个文件。选择后,这些文件可以使用提交表单的方式上传到服务器上,或者通过 Javascript 代码和文件 API 对文件进行操作。 如下代码: 如上图,通过inpu框选择文件上传之后,我们可以获取到我们上传的文件对象,那么我们应该怎样将获取到的文件对象更好的展示出来呢? 1、选择图片文件并在页面上显示 这种情况我们可以将获取到的文件对象转换为base64字符,再将其赋予img标签的src属性即可,这里我们需要使用到FileReader对象来进行读取。 FileReader 对象允许 Web 应用程序异步读取存储在用户计算机上的文件(或原始数据缓冲区)的内容,使用 File 或 Blob 对象指定要读取的文件或数据。 其中 File 对象可以是来自用户在一个<input>元素上选择文件后返回的FileList对象,也可以来自拖放操作生成的 DataTransfer对象,还可以是来自在一个HTMLCanvasElement上执行mozGetAsFile()方法后返回结果。 详细的介绍和更多的使用文档都可以上MDN进行查看,这里我也就不过多赘述了。 想要获取文件的base64 编码,我们可以使用readAsDataURL 方法来读取: readAsDataURL 方法会读取指定的 Blob 或 File 对象。读取操作完成的时候,readyState 会变成已完成DONE,并触发 loadend 事件,同时 result 属性将包含一个data:URL 格式的字符串(base64 编码)以表示所读取文件的内容。 具体代码如下: 2、选择text文本文件并在页面上显示文件内容 首先我们先创建一个txt文件,并写入一些内容: 想要获取文件的文本内容,我们可以使用readAsText 方法来读取: readAsText 方法可以将 Blob 或者 File 对象转根据特殊的编码格式转化为内容 (字符串形式) 具体代码如下: 二、将img标签图片转换为DataURL数据类型或Blob数据类型 1、将图片转换为 DataUR 数据类型 我们首先获取到 img 标签元素。然后创建一个 canvas 元素,并获取其 2D 上下文。根据图像的宽度和高度设置 canvas 的宽度和高度。接着使用 drawImage 方法将 img 元素中的图像绘制到 canvas 上。最后,使用 toDataURL 方法即可将 canvas 中的内容转换为 DataURL 数据类型,具体代码如下: 2、将图片转换为 Blob 数据类型 前面canvas绘制图片的步骤是一样的,只是这里最后使用了canvas的toBlob方法来进行转换,需要注意的是toBlob方法中的几个参数: callback 回调函数,可获得一个单独的 Blob 对象参数。如果图像未被成功创建,可能会获得 null 值。 type 可选 DOMString 类型,指定图片格式,默认格式(未指定或不支持)为 image/png。 quality 可选 Number 类型,值在 0 与 1 之间,当请求图片格式为 image/jpeg 或者 image/webp 时用来指定图片展示质量。如果这个参数的值不在指定类型与范围之内,则使用默认值,其余参数将被忽略。 获取到的Blob 数据如下: 三、图片压缩 我们可以使用JavaScrip对图片进行质量压缩来缩小图片大小,具体使用到的方法是上面提到的toBlob(callback, type, quality),我们可以通过其第三个参数来对质量进行压缩。 上面代码定义了一个名为compressImage的函数,它接受四个参数:file(要压缩的文件),maxWidth(最大宽度),maxHeight(最大高度)和quality(图像质量,范围从0到1)。 在函数内部,我们首先使用FileReader读取文件,并将其转换为Data URL。然后,我们创建一个Image对象并将Data URL赋给它。在图像加载完成后,我们根据指定的最大宽度和高度来调整图像大小。 接下来,我们使用<canvas>元素创建一个画布,并设置其宽度和高度。然后,我们在画布上通过drawImage方法绘制图像,将其缩放到适当的大小。 最后,我们使用toBlob方法将画布内容转换为Blob对象,并将其以指定的JPEG格式和质量解析。最终返回压缩后的Blob对象。 具体效果如下: 四、图片加水印 这个之前有单独写了一篇文章,感兴趣的同学可以到这里查看:JavaScript实现为图片添加水印的方法详解_javascript技巧_脚本之家 (jb51.net) 以上就是JavaScript中文件流处理场景及方法的详细内容,更多关于JavaScript文件流处理的资料请关注脚本之家其它相关文章!

----------------------------------
栏目分类
相关资讯