【问题标题】:C# UWP - FileStream access DeniedC# UWP - FileStream 访问被拒绝
【发布时间】:2018-02-08 16:59:01
【问题描述】:

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

“拒绝访问“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);
});

【问题讨论】:

  • 我想要么该文件正在使用中,要么您的程序没有访问该文件位置的权限。
  • 如何为我的程序授予访问权限?谢谢
  • 根据谁控制文件系统,网络管理员可能必须授予您对该目录位置的权限,或者您可以尝试以管理员身份运行您的程序,如果您要部署此程序并且您需要它以管理员身份运行,您可能需要考虑添加清单。
  • 您将很难在 UWP 中加载类似的文件。查看docs.microsoft.com/en-us/windows/uwp/files/… 了解加载文件的推荐方式 - 您需要在应用清单中获得权限才能访问该位置,并且您最好将其加载为 StorageFile;

标签: uwp filestream imgur


【解决方案1】:

“拒绝访问“C:\User\53324\Pictures\oldboy2.jpg””

Windows 应用商店应用以沙盒方式运行,并且对文件系统的访问权限非常有限。在大多数情况下,他们只能直接访问他们的安装文件夹和他们的应用程序数据文件夹。只能通过代理进程访问其他位置。您可以通过FileOpenPicker 访问@"C:\Users\53324\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

【讨论】:

    【解决方案2】:

    试试这个:

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

    应该可以。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-09-18
      • 1970-01-01
      • 2018-05-17
      • 2019-06-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-09-13
      相关资源
      最近更新 更多