如何使用 PCL 支持从 xamarin 跨平台项目中的 URL 下载文件
how to download a file from URL in xamarin cross platform project using PCL Support
我是 Xamarin 的新手。由于只有一小部分 .Net 程序集可用于 PCL.
,因此面临很多困难
我需要通过点击 URL 下载一个 .db 文件,该文件需要保存在本地驱动器中。由于项目在 PCL 所以这不允许我在我的项目中使用 System.IO.File,所以我无法进行 .Net class 库中可用的文件操作。
Ex:假设我正在点击 URL “http://123.com/register.db” 并且这个 returns register.db 作为响应。我需要保存 register.db,因为它在我的本地存储中。
我点击 URL 的代码如下
public static async Task LaunchURLForSync(string targetUrl)
{
try
{
using (HttpClient client = new HttpClient())
{
using (HttpResponseMessage response = await client.GetAsync(targetUrl, HttpCompletionOption.ResponseHeadersRead))
using (Stream streamToReadFrom = await response.Content.ReadAsStreamAsync())
{
string fileToWriteTo = Path.GetFileName();
using (Stream streamToWriteTo = File.Open(fileToWriteTo, FileMode.Create)) // This doesn't work with PCL for ex. FIle.Open etc
{
await streamToReadFrom.CopyToAsync(streamToWriteTo);
}
}
}
}
catch (Exception ex)
{
throw ex;
}
}
任何帮助将不胜感激。提前谢谢你:)
PCL 代码只有一部分 API 可供您使用。为了访问所有 API,您有时必须在每个平台上编写本机代码。我建议阅读 Xamarin 的文件存储文章 here。
我还强烈建议使用 PCL Storage 插件,它可以让您轻松 运行 从 Xamarin Forms 项目中归档相关方法。 Xamarin其实也推荐这个库。
要使用 PCL 存储来做你想做的事,在你的所有项目中安装库后,你将执行以下操作:
IFile file = await folder.CreateFileAsync("myfile.abc", CreationCollisionOption.ReplaceExisting);
byte[] buffer = new byte[100];
using (System.IO.Stream stream = await file.OpenAsync(FileAccess.ReadAndWrite)) {
stream.Write(buffer, 0, 100);
}
我是 Xamarin 的新手。由于只有一小部分 .Net 程序集可用于 PCL.
,因此面临很多困难我需要通过点击 URL 下载一个 .db 文件,该文件需要保存在本地驱动器中。由于项目在 PCL 所以这不允许我在我的项目中使用 System.IO.File,所以我无法进行 .Net class 库中可用的文件操作。
Ex:假设我正在点击 URL “http://123.com/register.db” 并且这个 returns register.db 作为响应。我需要保存 register.db,因为它在我的本地存储中。
我点击 URL 的代码如下
public static async Task LaunchURLForSync(string targetUrl)
{
try
{
using (HttpClient client = new HttpClient())
{
using (HttpResponseMessage response = await client.GetAsync(targetUrl, HttpCompletionOption.ResponseHeadersRead))
using (Stream streamToReadFrom = await response.Content.ReadAsStreamAsync())
{
string fileToWriteTo = Path.GetFileName();
using (Stream streamToWriteTo = File.Open(fileToWriteTo, FileMode.Create)) // This doesn't work with PCL for ex. FIle.Open etc
{
await streamToReadFrom.CopyToAsync(streamToWriteTo);
}
}
}
}
catch (Exception ex)
{
throw ex;
}
}
任何帮助将不胜感激。提前谢谢你:)
PCL 代码只有一部分 API 可供您使用。为了访问所有 API,您有时必须在每个平台上编写本机代码。我建议阅读 Xamarin 的文件存储文章 here。
我还强烈建议使用 PCL Storage 插件,它可以让您轻松 运行 从 Xamarin Forms 项目中归档相关方法。 Xamarin其实也推荐这个库。
要使用 PCL 存储来做你想做的事,在你的所有项目中安装库后,你将执行以下操作:
IFile file = await folder.CreateFileAsync("myfile.abc", CreationCollisionOption.ReplaceExisting);
byte[] buffer = new byte[100];
using (System.IO.Stream stream = await file.OpenAsync(FileAccess.ReadAndWrite)) {
stream.Write(buffer, 0, 100);
}