我正在尝试将图像文件写入localFolder存储。我想将它专门写入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 runtime error: The filename, directory name, or volume label syntax is incorrect.
WinRT information: The specified name (ms-appx:///local/images/heroes/image_name.png) contains one or more invalid characters.
答案 0 :(得分:5)
我明白了。对于任何想知道的人,你可以致电
getFolderAsync('SomeFolderName')
来自
Windows.Storage.ApplicationData.current.localFolder
实例。 getFolderAsync()
与任何promise函数类似,如果文件夹不存在,将返回错误。从那里你可以运行
createFolderAsync('SomeFolderName')
创建文件夹,然后继续你正在做的事情。在我的情况下,最好创建一个像writeFileAsync()
这样的函数,然后根据文件夹是否存在来调用它。
请记住getFolderAsync()
一次只能获得一个文件夹,例如
getFolderAsync('along/list/of/folders')
不起作用。你必须将getFolderAsync()
个电话连在一起,我相信(如果我错了,请纠正我!)。