2

我正在尝试将图像文件写入 localFolder 存储。我想将它专门写入images/heroes/localFolder中的文件夹。有没有办法用我现有的代码做到这一点?

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.

4

1 回答 1

5

我想到了。想知道的可以拨打

getFolderAsync('SomeFolderName')

来自

Windows.Storage.ApplicationData.current.localFolder

实例。 getFolderAsync()就像任何 promise 函数一样,如果文件夹不存在,将返回错误。从那里你可以运行

createFolderAsync('SomeFolderName')

创建文件夹,然后继续您正在执行的操作。在我的情况下,最好创建一个类似的函数writeFileAsync(),然后根据文件夹是否首先存在来调用它。

请记住,getFolderAsync()一次只能获取一个文件夹,所以像

getFolderAsync('along/list/of/folders')

不会工作。我相信,您必须将getFolderAsync()电话联系在一起(如果我错了,请纠正我!)。

于 2013-01-27T10:19:08.340 回答