我正在尝试将图像文件写入本地文件夹存储。我想将其专门写入 localFolder 内的 images/heroes/
文件夹。有没有办法用我现有的代码来做到这一点?
return WinJS.xhr({ url: fileToDownloadURL, responseType: 'blob' }).then(
function (response) {
var input = response.response.msDetachStream();
var filename = 'ms-appx:///local/images/heroes/image_name.png';
Windows.Storage.ApplicationData.current.localFolder.createFileAsync(filename,
Windows.Storage.CreationCollisionOption.replaceExisting).then(
function (file) {
return file.openAsync(Windows.Storage.FileAccessMode.readWrite).then(
function (output) {
return Windows.Storage.Streams.RandomAccessStream.copyAsync(input, output).then(
function () {
output.flushAsync().then(function () {
input.close();
output.close();
});
});
});
}
}
)};
我收到此错误消息:
0x8007007b - JavaScript 运行时错误:文件名、目录名或卷标语法不正确。
WinRT 信息:指定的名称 (ms-appx:///local/images/heroes/image_name.png) 包含一个或多个无效字符。
最佳答案
我明白了。对于任何想知道的人,您可以调用
getFolderAsync('SomeFolderName')
来自
Windows.Storage.ApplicationData.current.localFolder
实例。 getFolderAsync()
与任何 Promise 函数类似,如果文件夹不存在,则会返回错误。从那里你可以运行
createFolderAsync('SomeFolderName')
创建文件夹,然后继续您正在做的事情。就我而言,最好创建一个像 writeFileAsync()
这样的函数,然后根据文件夹是否存在来调用它。
请记住 getFolderAsync()
一次只能获取一个文件夹,因此类似于
getFolderAsync('along/list/of/folders')
行不通。我相信,您必须将 getFolderAsync()
调用链接在一起(如果我错了,请纠正我!)。
关于windows-8 - 在 localFolder 中写入文件特定文件夹,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14543741/