将图像blob-object保存到本地文件系统Javascript

时间:2017-09-11 14:05:55

标签: javascript blob electron html5-filesystem

我有一个blob对象,我从包含图像的画布中获取。我将此blob更改为objectURL。

let myBlob = canvas.toBlob(function(blob) {...}, 'image/jpeg', 0.95);
let myUrl = URL.createObjectURL(myBlob);

我得到一个blob对象网址:blob:file:///d324f-3fd4....

要获取保存文件的位置,我首先尝试在调用getDirectory对象的DirectoryEntry方法之前请求文件系统。但是,我收到了通用的File not found in the directory错误。

window.requestFileSystem = window.requestFileSystem || window.webkitRequestFileSystem;
webkitRequestFileSystem(window.TEMPORARY, 2048*2048, resolve, errorHandler);
// doesn't resolve to any value

我在Windows 10的AppData文件夹中到处搜索,但没有找到临时文件。我的猜测是blob只存在于浏览器内存中,并没有实际保存在电子的临时根文件夹中。

1 个答案:

答案 0 :(得分:2)

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> <select name="reason_change[1]" id="reason_change[1]" > <option value="0">--0000--</option> <option value="1">--0001--</option> <option value="2">--0002--</option> </select> <div class="field" id="new_acc[1]"> <label>Account</label> <input type="text" name="account_cus[1]" id="account_cus[1]" value=""> </div> <select name="reason_change[2]" id="reason_change[2]" > <option value="0">--0000--</option> <option value="1">--0001--</option> <option value="2">--0002--</option> </select> <div class="field" id="new_acc[2]"> <label>Account</label> <input type="text" name="account_cus[1]" id="account_cus[2]" value=""> </div>不会将您的文件保存在磁盘上,它只会创建一个符号链接。

如果Blob存储在内存中(就像你的情况一样),符号链接指向内存,并且只要创建符号链接的会话处于活动状态,就会将文件保存在内存中。

如果是文件(来自用户输入),则符号链接直接指向用户的磁盘。

因此,在您的情况下,您无法访问其位置,因为它只存在于内存中。

现在,你总是可以将Blob存储在fileSystem上,但我不是电子忍者,所以我会让你检查别人的答案:Save video blob to filesystem electron/node js