Typescript/Javascript加载现有文件而无需用户交互
我已经看到了许多利用Typescript/Javascript加载现有文件而无需用户交互,javascript,file,typescript,Javascript,File,Typescript,我已经看到了许多利用 <input type="file" id="file"/> 但是,我知道文件路径,我只想在没有任何用户交互的情况下得到它。在本例中,$img.files[0]是一个Blob,因此我似乎需要从已知的文件路径创建一个新的Blob或File对象,但我不知道如何做。我不想创建新文件,只想从现有文件创建一个对象。我认为这将是非常直接的,所以我希望我只是错过了一些简单的东西。谢谢 不,你不能那样做。用户必须识别要加载的文件(通过输入type=“file”、拖放等)。没有
<input type="file" id="file"/>
但是,我知道文件路径,我只想在没有任何用户交互的情况下得到它。在本例中,
$img.files[0]
是一个Blob,因此我似乎需要从已知的文件路径创建一个新的Blob
或File
对象,但我不知道如何做。我不想创建新文件,只想从现有文件创建一个对象。我认为这将是非常直接的,所以我希望我只是错过了一些简单的东西。谢谢 不,你不能那样做。用户必须识别要加载的文件(通过输入type=“file”
、拖放等)。没有用户的干预,您不能预先指定文件名,也不能启动文件加载。这将是一个巨大的安全漏洞
您可以从您的服务器加载文件,也可以通过跨源资源共享从允许您的源的其他服务器加载文件,但不能从用户的机器加载文件。如果浏览器允许javascripts加载它喜欢的任何文件,听起来会是一个安全漏洞,不是吗?如果用户不选择文件,就无法选择它。因此,听起来正确的方法是让javascript从服务器加载文件。我今天的搜索功能一定很弱。我肯定这个问题我已经见过十几次了;但是没有找到他们。希望其他人会。
let $img: any = document.querySelector('#file');
if (typeof (FileReader) !== 'undefined') {
let reader = new FileReader();
reader.onload = (e: any) => {
this.pdfSrc = e.target.result;
};
reader.readAsArrayBuffer($img.files[0]);
}