Xamarin iOS中的下载路径

问题描述 投票:0回答:2

我正在使用Xamarin.Forms,并编写了代码来下载iOS的文件平台。它正在成功下载文件,没有任何错误。但是下载后,我无法在苹果设备中找到下载的文件。

在调试过程中,我发现它正在显示

/var/mobile/Containers/Data/Application/1234567A-B8CD-9EF9-C850-9G73587DC7C/Documents/XF_Downloads/hausmann_abcd.jpg

路径。那么在哪个位置保存文件?下面是相同的图像。

enter image description here

我已经为此编写了以下代码

public class IosDownloader : IDownloader
{
    public event EventHandler<DownloadEventArgs> OnFileDownloaded;

    public void DownloadFile(string url, string folder)
    {
        string pathToNewFolder = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Personal), folder);
        Directory.CreateDirectory(pathToNewFolder);

        try
        {
            WebClient webClient = new WebClient();
            webClient.DownloadFileCompleted += new AsyncCompletedEventHandler(Completed);
            string pathToNewFile = Path.Combine(pathToNewFolder, Path.GetFileName(url));
            webClient.DownloadFileAsync(new Uri(url), pathToNewFile);
        }
        catch (Exception ex)
        {
            if (OnFileDownloaded != null)
                OnFileDownloaded.Invoke(this, new DownloadEventArgs(false));
        }
    }

    private void Completed(object sender, AsyncCompletedEventArgs e)
    {
        if (e.Error != null)
        {
            if (OnFileDownloaded != null)
                OnFileDownloaded.Invoke(this, new DownloadEventArgs(false));
        }
        else
        {
            if (OnFileDownloaded != null)
                OnFileDownloaded.Invoke(this, new DownloadEventArgs(true));
        }
    }
}
xamarin xamarin.forms xamarin.ios xamarin-studio
2个回答
1
投票

当文件保存在应用程序上时,它是应用程序沙箱中的一个临时URL。为了使该图像文件可以通过Apple的Photos公开访问,您必须使用本机代码发出请求,将新的PHImageAsset添加到照片库。

在表单中,您需要访问本机框架并因此运行本机代码。如果您不知道如何操作,则有很多在线执行此操作的示例。但是,如果您要在共享代码框架中运行本机代码,则这里有介绍。 https://docs.microsoft.com/en-us/xamarin/xamarin-forms/app-fundamentals/dependency-service/introduction

这里是获取临时文件URL并将其保存到Photos框架的示例,您可以使用本机Xamarin.iOS框架进行编码:

    public void AddImageUrlToPhotosLibrary(string urlToSaveToPhotos)
    {
        PHPhotoLibrary.SharedPhotoLibrary.PerformChanges(() => {

            //This is bound to native https://developer.apple.com/documentation/photokit/phassetchangerequest/1624060-creationrequestforasset
            //Parameter is an NSURL of path to image.
            PHAssetChangeRequest.FromImage(new NSUrl(urlToSaveToPhotos));

        }, (completed, error) => {

            if (completed)
            {
                if (error != null)
                {
                    Console.WriteLine($"Failed saving image asset {error.LocalizedDescription}");
                } else
                {
                    Console.WriteLine($"Successfully saved image to photos library.");
                }
            }
        });
    }

0
投票

我无法在苹果设备中找到下载的文件。

如果使用simulator,则可以通过在[]中输入路径直接在mac中找到该文件夹​​>

your mac-> select Finder->然后打开Go菜单->单击Go to Folder,如我在此线程中所述:

Where can I find the MyDocuments folder on iPhone Simulator?

如果您将应用程序安装在真实设备

中。您可以在中浏览文件

Xcode-> Devices and Simulators-> download container,如本线程中所述:

Browse the files created on a device by the iOS application I'm developing,下载容器后,可以右键单击它并选择Show Package Contents。然后您可以看到文件夹。

image

您还可以通过项目中的路径访问文件。

© www.soinside.com 2019 - 2024. All rights reserved.