2016-09-19 59 views
0

我試圖將其上傳於Amazon S3的文件後無法使用的文件,之後filepicked它。UWP C# - 正在filepicked

開始,我這樣做:

 var picker = new Windows.Storage.Pickers.FileOpenPicker(); 
     picker.ViewMode = Windows.Storage.Pickers.PickerViewMode.Thumbnail; 
     picker.SuggestedStartLocation = 
      Windows.Storage.Pickers.PickerLocationId.PicturesLibrary; 
     picker.FileTypeFilter.Add("*"); 

     Windows.Storage.StorageFile file = await picker.PickSingleFileAsync(); 

所以在這裏,file拾取,且已可使用。

在那之後,我嘗試上傳,這樣的:

 if (file != null) 
     { 
      upload(file.Path); 
     } 
     ... 

     public async Task<string> upload(string path) 
     { 
      TransferUtility utility = new TransferUtility(...); 
      await utility.UploadAsync(path,key, bucket); // HERE IS THE PROBLEM 

     } 

,因此,這是我逮住了錯誤:

拋出異常:在mscorlib程序 'System.AggregateException'。 ni.dll System.AggregateException:發生一個或多個錯誤。 ---> System.UnauthorizedAccessException:訪問被拒絕。

處 PCLStorage.WinRTFileSystem.d__0.MoveNext() System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(任務 任務)在 System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任務 任務)
- - 內部異常堆棧跟蹤結束---在System.Threading.Tasks.Task 1.GetResultCore(Boolean waitCompletionNotification) at System.Threading.Tasks.Task 1.get_Result()at Amazon.S3.Transfer.TransferUtility.validate(TransferUtilityUploadRequest request)at Amazon.S3.Transfer.TransferUtility .GetUploadCommand(TransferUtilityUploadRequest 請求,SemaphoreSli (內部例外#0)(在內部異常#0),在Amazon S3.S3Transfer.TransferUtility.UploadAsync(String filePath,String bucketName,String key,CancellationToken cancellationToken) System.UnauthorizedAccessException:訪問被拒絕。

我試圖把它放在另一個任務異步,但結果相同。

任何想法?

+0

的filepicker應該只是得到的文件的名稱,而不是打開該文件。有不同版本的文件選擇器,你應該使用一個不打開文件,只需獲取文件名稱。 – jdweng

+0

如何才能獲取文件的路徑而不是打開它? – F4Ke

+0

在表單應用程序中它是:OpenFileDialog(不是FileOpen)。 – jdweng

回答

2

,除非該文件是在像應用程序安裝文件夾可訪問地點使用其路徑我們不能訪問文件,喜歡音樂的lib文件夾稱爲自UWP應用程序被隔離在沙箱中運行。 FileOpenPicker有助於在應用,讓用戶選擇打破了應用程序容器和對文件的訪問,是的,我們可以用流然後訪問該文件,例如,我們也可以得到這個文件的路徑,但不能使用此路徑當你想上傳這個文件時再次訪問這個文件。欲瞭解更多信息,你可以參考Skip the path: stick to the StorageFile

我的建議是,該文件後回升,訪問文件流,並嘗試上傳這個文件流。