将文件下载到WinJS中的文件系统

时间:2013-12-05 22:23:03

标签: javascript winjs

我们正在开发一个应用程序,用于从HTTP URL下载文件,这些扩展/文件类型在运行时才会知道。我们一直关注this tutorial作为起点,但由于我们没有处理图像,因此它没有帮助我们。

问题是教程中的代码会为您提供Blob对象,但我找不到任何允许我们使用的代码:

  1. 将Blob转换为字节数组。
  2. 将Blob直接保存到文件系统。
  3. 最终目标是将给定URL的文件无缝保存到文件系统并使用默认应用程序启动它,或直接从URL启动它(如果您只是调用{{,则不会出现保存提示) 1}})。

    非常感谢任何人可能拥有的任何见解。

1 个答案:

答案 0 :(得分:4)

关于将内容下载到字节数组中: 将WinJS.xhr与responseType选项一起使用为'arraybuffer'将返回ArrayBuffer中的内容。可以从ArrayBuffer实例化javascript typed array,例如UInt8Array。这样内容可以读入字节数组。代码看起来像这样:

// todo add other options reqd
var options = { url: url, responseType: 'arraybuffer' }; 
WinJS.xhr(options).then(function onxhr(ab)
{
    var bytes = new Uint8Array(ab, 0, ab.byteLength);
}, function onerror()
{
    // handle error
});

通过用户使用SaveFilePicker明确选择保存文件位置或使用folder picker选择文件夹来处理将文件保存到文件系统的权限后,文件可以保存在本地文件系统中。此外,文件可以保存到app data文件夹。

出于安全原因,无法加载来自本地文件系统的AFAIK,html / js / css文件或应用程序数据。虽然DOM可以在约束下操作,但是可以添加内容。我不确定您的申请要求。您可能需要考虑替代方案,而不是启动下载的html文件。