1

我爲Windows 8和Windows 10的Windows Store製作了一個WinJS應用程序。我爲我的公司製作了一個應用程序,並且在用戶進程結束時,他們需要單擊一個導出按鈕,該按鈕將大約10個文件保存到一個他們選擇的文件夾。如何用WinJS一次保存多個文件?

現在,我知道如何使用Windows.Storage.Pickers.FileSavePicker()來保存單個文件,但我不想給用戶接受每個10個文件的保存負擔 - 我只是想讓用戶接受他們將要進入​​的文件夾,然後將它們全部保存在一起。

WinJS中可能嗎?

+0

使用'.FolderPicker()',然後添加文件名到路徑。 –

+0

@ChrisG你會介意在pastebin中發送一些關於如何使用FolderPicker()api的示例代碼,並獲取寫入該文件夾的文件名和文件內容的數組?我將非常感激! – TKoL

+0

我不會,對不起。我通過谷歌的自動完成功能找到了FolderPicker調用,我甚至沒有打開頁面。你得到報酬來做到這一點,並且工作被裁掉了。祝你好運 :) –

回答

1

但我不想讓用戶承擔接受10個文件中每一個文件保存的負擔 - 我只是希望用戶接受他們要進入的文件夾,然後將它們保存起來一舉成功。

您可以使用FolderPicker來獲得目標文件夾,並使用StorageFolder.CreateFileAsync生成10個文件和你想要的內容複製到文件:

var pickers = Windows.Storage.Pickers; 
var DataWriter = Windows.Storage.Streams.DataWriter; 
... 
document.getElementById("btnSave").onclick = function (evt) 
{ 
     var content = "Test Content"; 
     var picker = new pickers.FolderPicker(); 
     picker.suggestedStartLocation = pickers.PickerLocationId.computerFolder; 
     picker.fileTypeFilter.append(".txt"); 
     picker.pickSingleFolderAsync().then(function (folder) { 
     if (folder != null) 
     { 
      for (var i = 1; i < 11; i++) { 
       folder.createFileAsync("testFile" +i+ ".txt", Windows.Storage.CreationCollisionOption.replaceExisting) 
        .then(function (file) { 
         file.openAsync(Windows.Storage.FileAccessMode.readWrite) 
          .then(function (randomAccessStream) { 
           var dataWriter = new DataWriter(randomAccessStream.getOutputStreamAt(0)); 
           dataWriter.writeString(content); 
             dataWriter.storeAsync().done(function() { 
              randomAccessStream.close(); 
              dataWriter.close(); 
           }); 
          }, errorHandler); 
        }, errorHandler); 
       } 
      } 
     }, errorHandler) 
} 

function errorHandler(error){} 
相關問題