1

documentlibraryに新しいフォルダを作成しようとしていますが、FileOpenPickerを使用して画像を選択し、createfolderを保存しています...

私が直面しているエラーは次のとおりです。

タイプ'System.Exception'の例外がmscorlib.dllで発生しましたが、ユーザーコードで処理されませんでした

追加情報:ファイルがすでに存在する場合、そのファイルを作成することはできません。(HRESULTからの例外:0x800700B7)

この例外のハンドラーがある場合、プログラムは安全に続行できます。

これは私のコードです:

private async void Button_Click_1(object sender, RoutedEventArgs e)
{
    StorageFolder storage = KnownFolders.DocumentsLibrary;
    storage = await storage.CreateFolderAsync("New folder", CreationCollisionOption.GenerateUniqueName);
        
    var openpicker = new FileOpenPicker();
    openpicker.CommitButtonText = "Upload";
    openpicker.FileTypeFilter.Add(".jpg");
    openpicker.FileTypeFilter.Add(".jpeg");
    openpicker.FileTypeFilter.Add(".png");
    openpicker.SuggestedStartLocation = PickerLocationId.DocumentsLibrary;
    openpicker.ViewMode = PickerViewMode.List;

    file = await openpicker.PickSingleFileAsync();

    var imageFile = await StorageFile.GetFileFromPathAsync(file.Path);
    IRandomAccessStream rStream = await imageFile.OpenAsync(FileAccessMode.ReadWrite);
    Stream stream = rStream.AsStreamForWrite();

    if (storage != null)
    {
        if (file != null)
        {
            await file.CopyAsync(Windows.Storage.ApplicationData.Current.LocalFolder);
        }
    }
}
4

1 に答える 1

1

コードが正しくないか、説明していることを実行していないようです。代わりにこれを試してください:

var destinationFolder = await KnownFolders.DocumentsLibrary.CreateFolderAsync("New Folder", CreationCollisionOption.GenerateUniqueName);

var openpicker = new FileOpenPicker();
openpicker.CommitButtonText = "Upload";
openpicker.FileTypeFilter.Add(".jpg");
openpicker.FileTypeFilter.Add(".jpeg");
openpicker.FileTypeFilter.Add(".png");
openpicker.SuggestedStartLocation = PickerLocationId.DocumentsLibrary;
openpicker.ViewMode = PickerViewMode.List;

file = await openpicker.PickSingleFileAsync();


if (destinationFolder != null && file !=null)
{
    await file.CopyAsync(destinationFolder);

}

この最後のファイルのコピー手順では、ファイル名の競合を解決するオーバーロードを使用することをお勧めします

await file.CopyAsync(destinationFolder, file.Name, NameCollisionOption.GenerateUniqueName);
于 2012-10-04T08:34:42.377 に答える