C# UWP - 文件流访问被拒绝

C# UWP - FileStream access Denied

我尝试读取图像,但出现以下错误:

"Access Denied to "C:\User324\Pictures\oldboy2.jpg""

代码:

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

试试这个:

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

应该可以。

"Access Denied to "C:\User324\Pictures\oldboy2.jpg""

Windows 存储应用程序 运行 沙盒化并且对文件系统的访问权限非常有限。大多数情况下,他们只能直接访问安装文件夹和应用程序数据文件夹。只能通过代理程序访问其他位置。您可以通过 FileOpenPicker.

访问 @"C:\Users324\Pictures\oldboy2.jpg"
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
{

}

更多可以参考Open files and folders with a picker.