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()一度に取得できるフォルダは1つだけなので、次のようになります。

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

動作しません。あなたはgetFolderAsync()電話をつなぎ合わせる必要があると私は信じています(私が間違っているなら私を訂正してください!)。

于 2013-01-27T10:19:08.340 に答える