Javascript:如何将文件位置保存到本地存储?

标签 javascript angular local-storage

在 Javascript(带有 Angular 2+)中,我有一个应用程序,在用户选择 dataURl 后,我尝试将其保存到本地存储中。目前我已经尝试了以下代码,但在检索时我得到一个空的 obj {} 作为主体。

HTML

<input style="display:none;" type="file" (change)="fileEvent($event)" #file>

Angular 文件存储和检索功能

fileEvent(ev: any): void {
    console.log('Event select file', ev);    
    let obj: any = ev.target.files[0];
    let file: File = {
      Key: obj.name,
      ContentType: obj.type,
      Size: obj.size,
      Body: obj      
    };
    localStorage.setItem("myapp", JSON.stringify(file);
}

getFileFromLocalStorage {
     console.log(JSON.parse(localStorage.getItem("myapp"));
}

下面的文件检索响应

enter image description here

最佳答案

您不能像这样将图像直接存储到本地存储。首先,您需要将图像转换为 Base64。然后将 Base64 字符串保存在 localStorage 值中。

下面是将Image转换为Base64的函数:

function getBase64Image(img) {
    var canvas = document.createElement("canvas");
    canvas.width = img.width;
    canvas.height = img.height;

    var ctx = canvas.getContext("2d");
    ctx.drawImage(img, 0, 0);

    var dataURL = canvas.toDataURL("image/png");

    return dataURL.replace(/^data:image\/(png|jpg);base64,/, "");
}

现在您可以将其保存到本地存储中。

这是reference answer就这样。

关于Javascript:如何将文件位置保存到本地存储?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50129312/

相关文章:

javascript - 使用应用程序级别解析 AngularJS 的动态指令模板

javascript - Chrome 扩展 : store data on background

javascript - 如何使用 GraphQL 处理 long Int?

javascript - Window.onblur - 禁用 iframe 事件

javascript - 了解代码结构

css - 无法以 Angular 获取 openlayers css

c# - 从 ASP.NET WEB API 调用 Angular 路由

javascript - 如何与使用 child_process.spawn 创建的新创建的服务器进行交互

angular - 带查询参数的 HttpTestingController.expectOne()

javascript - 向 localStorage 对象添加元素