C# 如何将http客户端的图像保存到UWP中的特定文件夹
我有一个小功能,可以从http客户端保存图像,但我有两个问题C# 如何将http客户端的图像保存到UWP中的特定文件夹,c#,uwp,C#,Uwp,我有一个小功能,可以从http客户端保存图像,但我有两个问题 图像保存在bin文件夹中,我在创建的项目中有一个名为photos的文件夹,我希望代码保存在该文件夹中 我想获得8个以上的图像,而不是覆盖当前图像,因为另一个调用将重写图像。我的代码如下,不同的ID会给出不同的图像: 因此,结果是一个名为test的文件,但覆盖了前一个文件。我想保存所有这些文件并保存在项目中的一个文件夹中。我该怎么办?欢迎提出任何建议,谢谢。1。 执行newfilestream(“test”,…)将在\test打开一
newfilestream(“test”,…)
将在\test
打开一个新的文件流,这不是我们想要的,因为
是执行程序的目录。相反,所有应用程序数据都应进入环境。SpecialFolder.ApplicationData\YourApplicationName
中,因此:
var photoLocation=Path.Combine(Environment.SpecialFolder.ApplicationData,“MyUwpApp”,“Photos”,“test”);
//确保%AppData%\MyUwpApp\Photos存在,如果不存在,请创建它
如果(!Directory.Exists(Path.GetDirectoryName(photoLocation))
CreateDirectory(Path.GetDirectoryName(photoLocation));
stream=新文件流(photoLocation,FileMode.Create,FileAccess.Write);
您可以检查目录是否存在于循环之外,只检查一次。但是,如果Photos
或MyUwpApp
在循环期间被删除,您的程序可能会崩溃。您还可以保存Path.GetDirectoryName(photoLocation)的返回值
如果你真的想,避免打两次电话
2.
您需要唯一的文件名。最简单的方法是将id
附加到每个文件中,就像Roy Cohen在他们的评论中所说的:
var photoLocation=Path.Combine(Environment.SpecialFolder.ApplicationData,“MyUwpApp”,“Photos”,“test”,id.ToString());
尝试将文件名从“test”
更改为类似$“test{id}”
。没有“项目”的概念当编译后的应用程序运行时。谢谢,但是当我运行此应用程序时,我在我提供的路径上收到一个权限被拒绝的错误。@Megatron213您可以在package.appxmainfest中声明。这是一个受限制的功能。可在“设置”>“隐私”>“文件系统”中配置访问权限。
using (var httpClient = new HttpClient())
{
using (var request = new HttpRequestMessage(HttpMethod.Get, url+id))
{
request.Headers.Authorization = new System.Net.Http.Headers.AuthenticationHeaderValue("Bearer", result.AccessToken);
using (
Stream contentStream = await (await httpClient.SendAsync(request)).Content.ReadAsStreamAsync(),
stream = new FileStream("test", FileMode.Create, FileAccess.Write))
{
await contentStream.CopyToAsync(stream);
}
}
}