#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 из них. Это очень просто.
- С помощью
Device.OpenUri(new Uri("Download link here"))
. Этот метод прост. Он открывает URL-адрес в мобильном веб — браузере клиента. И оттуда веб-браузер будет обрабатывать фоновый рабочий процесс для выполнения загрузки. - Используя
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