Как я могу загрузить файл в xamarin с помощью webview?

#xaml #xamarin #xamarin.forms #xamarin.android #xamarin.ios

Вопрос:

Я новичок в разработке Xamarin. Я надеюсь, что вы сможете решить мою проблему в простом режиме. У меня есть кроссплатформенное приложение, разработанное с помощью Xamarin, и я хочу загрузить файл с URL-адреса.

Я попытался загрузить файл с помощью кода C#, но я не могу этого сделать (для кроссплатформенного приложения), поэтому я хочу попробовать другой способ. Я хочу использовать веб-представление и загрузить файл непосредственно в веб-представление. проблема в том, что когда я нажимаю кнопку «загрузить» в веб-представлении, оно делает все, что угодно. можете ли вы помочь мне простым способом?

мое веб-представление выглядит так:

 <WebView Source="https://download.cnet.com/Free-YouTube-Downloader/3001-2071_4-75219434.html/" x:Name="webv" WidthRequest="1000" HeightRequest="1000" />
 

это пример URL-адреса

Ответ №1:

У вас есть множество вариантов. Но вот 2 из них. Это очень просто.

  1. С помощью Device.OpenUri(new Uri("Download link here")) . Этот метод прост. Он открывает URL-адрес в мобильном веб — браузере клиента. И оттуда веб-браузер будет обрабатывать фоновый рабочий процесс для выполнения загрузки.
  2. Используя WebClient() класс. Используя этот класс, вы сможете получить свой ответ в типе данных, который вам нравится, возможно string , или byte[] . Ниже приведен образец:
 var wb = new WebClient();

//Download as string
string x = wb.DownloadString("Download url");

//Download as byte[]
byte[] x = wb.DownloadData("Download Url");
 

Из возвращаемого значения x , теперь вы можете переписать его с помощью System.IO в другой файл.

Примечание: Этот метод является просто базовым. Вы можете реализовать это в задаче, чтобы ваше приложение не зависало во время загрузки.

Лучший подход: через службу зависимостей загрузите файл с самого Android и iOS через interface class . вы можете проверить это: https://github.com/SimonSimCity/Xamarin-CrossDownloadManager#where-are-the-files-stored