C# UWP — доступ к FileStream запрещен

Я пытаюсь прочитать изображение, но у меня есть следующая ошибка:

"Отказано в доступе к "C:\User\53324\Pictures\oldboy2.jpg""

код :

await Task.Run(async () =>
{
    using (var fs = new FileStream(@"C:\Users\53324\Pictures\oldboy2.jpg", FileMode.Open))
    {
        image = await endpoint.UploadImageStreamAsync(fs);
    }
    Debug.Write("Image uploaded. Image Url: " + image.Link);
});

person Oraekia    schedule 06.02.2018    source источник
comment
Я предполагаю, что либо файл используется, либо ваша программа не имеет разрешения на доступ к этому местоположению файла.   -  person Ryan Wilson    schedule 06.02.2018
comment
Как дать доступ к моей программе? Благодарность   -  person Oraekia    schedule 06.02.2018
comment
В зависимости от того, кто управляет файловыми системами, сетевой администратор может предоставить вам права на расположение этого каталога, или вы можете попробовать запустить свою программу от имени администратора, если вы собираетесь развернуть эту программу и вам нужно, чтобы она работала от имени администратора, может захотеть изучить добавление манифеста.   -  person Ryan Wilson    schedule 06.02.2018
comment
Вам будет сложно загружать такие файлы в UWP. Ознакомьтесь с docs.microsoft.com/en-us/ windows/uwp/files/ для рекомендуемых способов загрузки файлов — вам потребуется разрешение в манифесте вашего приложения для доступа к местоположению, и вам, вероятно, лучше загружать как StorageFile;   -  person Johnny Westlake    schedule 06.02.2018


Ответы (2)


"Отказано в доступе к "C:\User\53324\Pictures\oldboy2.jpg""

Приложения Магазина Windows работают в изолированной программной среде и имеют очень ограниченный доступ к файловой системе. По большей части они могут получить прямой доступ только к своей папке установки и папке данных приложения. Доступ к другим локациям возможен только через брокерский процесс. Вы можете получить доступ к @"C:\Users\53324\Pictures\oldboy2.jpg" через FileOpenPicker.

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

Windows.Storage.StorageFile file = await picker.PickSingleFileAsync();
if (file != null)
{
    // Application now has read/write access to the picked file

}
else
{

}

Для получения дополнительной информации вы можете обратиться к Открывайте файлы и папки с помощью средства выбора.

person Nico Zhu - MSFT    schedule 08.02.2018

Попробуй это:

var fileStream = new FileStream(yourFilePath, FileMode.Open, FileAccess.Read, FileShare.Read, 4096, true);
var bitmap = new BitmapImage();
await bitmap.SetSourceAsync(fileStream.AsRandomAccessStream());

Должно сработать.

person Jet Chopper    schedule 06.02.2018