Javascript 如何选择文件读取器读取方法?
在制作一个简单的图片上传程序时,我正在学习FileReaderAPI。上传文件有4种格式,即数组缓冲区、二进制字符串、数据URL和文本,我想知道如何选择一种 在为数不多的几篇文章中,有一篇说,当你想显示上传的图片时,数据URL是好的,而当你操作文件时,数组缓冲区是好的。你怎么认为?而且,什么时候是选择二进制字符串或文本格式的好时机?对于“文件上传器”,您根本不应该使用文件阅读器。 您不需要读取文件就可以上载它 如果您需要在当前页面中显示它,您仍然不需要文件读取器,它将直接指向磁盘上的文件,而不会导致无用的内存膨胀Javascript 如何选择文件读取器读取方法?,javascript,image,image-processing,Javascript,Image,Image Processing,在制作一个简单的图片上传程序时,我正在学习FileReaderAPI。上传文件有4种格式,即数组缓冲区、二进制字符串、数据URL和文本,我想知道如何选择一种 在为数不多的几篇文章中,有一篇说,当你想显示上传的图片时,数据URL是好的,而当你操作文件时,数组缓冲区是好的。你怎么认为?而且,什么时候是选择二进制字符串或文本格式的好时机?对于“文件上传器”,您根本不应该使用文件阅读器。 您不需要读取文件就可以上载它 如果您需要在当前页面中显示它,您仍然不需要文件读取器,它将直接指向磁盘上的文件,而不会
inp.onchange=e=>{
//是的,都是同步的。。。
const url=url.createObjectURL(inp.files[0]);
const img=新图像();
img.src=url;
文件.正文.附件(img);
};代码>
对于“文件上传器”,您根本不应该使用文件阅读器。
您不需要读取文件就可以上载它
如果您需要在当前页面中显示它,您仍然不需要文件读取器,它将直接指向磁盘上的文件,而不会导致无用的内存膨胀
inp.onchange=e=>{
//是的,都是同步的。。。
const url=url.createObjectURL(inp.files[0]);
const img=新图像();
img.src=url;
文件.正文.附件(img);
};代码>
如果您想以文本形式读取文件,例如CSV或JSON,您可以使用readAsText。@RobG Hi!当然,你是对的!所以,当我上传图像文件时,它们没有用,你认为呢?Kaido回答了这个问题,但简短的回答是肯定的。上传文件时不需要读取文件,但如果您只想接受某些类型而不依赖扩展名,则可能需要检查文件的标题(仍然不是万无一失的,但更难伪造)。如果您想以文本形式读取文件,例如CSV或JSON,则可以使用readAsText。@RobG Hi!当然,你是对的!所以,当我上传图像文件时,它们没有用,你认为呢?Kaido回答了这个问题,但简短的回答是肯定的。上传文件时不需要读取文件,但如果您只想接受某些类型而不依赖扩展名(仍然不是万无一失的,但更难伪造),则可能需要检查文件头。感谢您的回复!所以,如果我想在客户端调整大小,我会上传一个带有readAsArrayBuffer()的图像文件,对吗?@Heuyie no。除非你的解码器和编码器是用js编写的。但通常我们要做的是从blobURI中加载img元素中的图像,在画布上绘制调整大小的图像,然后获得调整大小的画布上的一个Blob。此外,如果我允许其他人上载文件,我需要读取文件并验证其文件类型,以确保安全性?@Heuyie这有点没用,坏人不会使用浏览器在你的服务器中注入坏东西。检查服务器端。您可以polyfill canvas.toBlob。谢谢你的回复!所以,如果我想在客户端调整大小,我会上传一个带有readAsArrayBuffer()的图像文件,对吗?@Heuyie no。除非你的解码器和编码器是用js编写的。但通常我们要做的是从blobURI中加载img元素中的图像,在画布上绘制调整大小的图像,然后获得调整大小的画布上的一个Blob。此外,如果我允许其他人上载文件,我需要读取文件并验证其文件类型,以确保安全性?@Heuyie这有点没用,坏人不会使用浏览器在你的服务器中注入坏东西。检查服务器端。您可以polyfill canvas.toBlob。