为啥我无法从我的 Xamarin.Forms UWP 应用程序访问 DownloadsFolder,并获得 System.UnauthorizedAccessException?
Posted
技术标签:
【中文标题】为啥我无法从我的 Xamarin.Forms UWP 应用程序访问 DownloadsFolder,并获得 System.UnauthorizedAccessException?【英文标题】:Why can’t I access the DownloadsFolder from my Xamarin.Forms UWP application, getting a System.UnauthorizedAccessException?为什么我无法从我的 Xamarin.Forms UWP 应用程序访问 DownloadsFolder,并获得 System.UnauthorizedAccessException? 【发布时间】:2021-05-23 15:02:43 【问题描述】:我的 Xamarin.Forms UWP 应用程序需要将文件保存在用户的设备上。 docs 表示 UWP 应用程序可以访问在通常的“下载”文件夹中创建的相应文件夹。但是,当我尝试使用 DownloadsFolder
类在那里保存文件时,出现以下异常:
Access to the path 'C:\Users\tikoz\Downloads\38b8dad0-9c00-4b76-8f23-59192c50b740_enn3pya30cxd2!App\tff20210219204840.jpg' is denied.
我用来下载文件的代码如下:
try
var checkAlreadyExistingFile = await Windows.Storage.DownloadsFolder.CreateFileAsync(fileName, CreationCollisionOption.FailIfExists);
var share = new ShareClient(StorageAccountConnectionString, FileShareName);
var directory = share.GetDirectoryClient(string.Empty);
var file = directory.GetFileClient(fileName);
ShareFileDownloadInfo download = await file.DownloadAsync();
using (var stream = File.OpenWrite(checkAlreadyExistingFile.Path)) // Raises the exception
await download.Content.CopyToAsync(stream);
DownloadedReceiptImagePath = stream.Name;
return DownloadedReceiptImagePath;
catch (Exception e)
Console.WriteLine(e);
return null;
我想下载保存在 Azure 文件共享中的文件。 catch
子句捕获上述由File.OpenWrite(checkAlreadyExistingFile.Path
指令引发的异常。我误解了文档,还是遗漏了什么?
【问题讨论】:
我认为您必须在 Package.appxmanifest 文件中包含一些内容才能访问下载文件夹 @ShubhamTyagi 我在有关DownloadsFolder
的文档中没有找到与该文件相关的任何内容。
***.com/questions/33082835/…
【参考方案1】:
我想下载保存在 Azure 文件共享中的文件。 catch 子句捕获上述由 File.OpenWrite(checkAlreadyExistingFile.Path 指令引发的异常。
请在此处查看DownloadsFolder
document。在下载文件夹中创建或访问文件不需要功能。但是你需要使用Windows Storage
Api 而不是System.IO
(OpenWrite
)。您可以通过以下方式写作。
var checkAlreadyExistingFile = await Windows.Storage.DownloadsFolder.CreateFileAsync("Test", CreationCollisionOption.FailIfExists);
using (var stream = await checkAlreadyExistingFile.OpenStreamForWriteAsync())
// process stream here.
【讨论】:
以上是关于为啥我无法从我的 Xamarin.Forms UWP 应用程序访问 DownloadsFolder,并获得 System.UnauthorizedAccessException?的主要内容,如果未能解决你的问题,请参考以下文章
为啥我的 Xamarin.Forms 控件在 StackLayout 中重叠?
为啥在使用 Prism 在 Xamarin.Forms 中导航到 root 时,我的 NavigationPage 顶部会出现默认标题?
为啥使用 Xamarin Forms 的 iOS 应用程序不显示 Font Awesome?