我们是否*必须*使用data:uri(readAsDataURL)来使用文件对象<;img/>;用JavaScript?
据我所知,当前创建我们是否*必须*使用data:uri(readAsDataURL)来使用文件对象<;img/>;用JavaScript?,javascript,file,data-uri,Javascript,File,Data Uri,据我所知,当前创建的常用技术一旦被替换或视频元素被删除,则必须使用revokeObjectURL手动释放以前的objectURL 对于htmlmageelement上的属性和htmlmageelement不是从htmlmageelement派生的属性,是否有相同的方法。不幸的是,在线搜索“没有数据URI的javascript图像文件”只会返回关于readAsDataURL的页面,这与我想要的相反。您设置了它的…src document.getElementById('file').onchan
的常用技术一旦被替换或视频
元素被删除,则必须使用revokeObjectURL
手动释放以前的objectURL
对于htmlmageelement
上的属性和htmlmageelement
不是从htmlmageelement
派生的属性,是否有相同的方法。不幸的是,在线搜索“没有数据URI的javascript图像文件”只会返回关于readAsDataURL
的页面,这与我想要的相反。您设置了它的…src
document.getElementById('file').onchange=function(){
if(this.files.length!==0){
var img=新图像();
img.src=URL.createObjectURL(this.files[0]);
文件.正文.附件(img);
}
};代码>
在谷歌黑暗肮脏的信息矿井里牺牲了更多的时间后,我在2014年12月的这篇文章中发现了一块煤块,上面说HTMLImageElement
的src
属性实际上接受了一个对象URI(呸!)
MDN也在他们的网站上介绍了这一点,尽管有些隐秘:
简而言之,myshowImageFile
函数可以按如下方式更新:
function showImageFile( file: File ): void {
let rdr = new FileReader();
rdr.readAsDataURL( file );
rdr.onloadend = function() {
let img = document.createElement('img');
img.src = rdr.result;
document.body.appendChild( img );
};
}
或者如果将重复使用img
元素:
function showVideoFile( file: File ): void {
let video = document.createElement('video');
video.srcObject = URL.createObjectURL( file ); // createObjectURL creates a URI alias to the existing file instance in-memory
}
function showImageFile( file: File ): void {
let objectURI = URL.createObjectURL( file ); // looks like "blob:http://mywebsite/{guid}"
let img = document.createElement('img');
img.src = objectURI ;
document.body.appendChild( img );
}
var img: HTMLImageElement;
function showImageFile( file: File ): void {
let oldSrc = img.src;
let objectURI = URL.createObjectURL( file );
img.src = objectURI;
if( oldSrc ) URL.revokeObjectURL( oldSrc );
}