【问题标题】:Xamarin CrossDownloadManager - cannot open downloaded fileXamarin CrossDownloadManager - 无法打开下载的文件
【发布时间】:2020-11-04 15:25:36
【问题描述】:

我在使用 Xamarin CrossDownloadManager 打开下载的文件时遇到问题。 我的代码与本教程中的一样:

https://www.youtube.com/watch?v=rcbm6R4e8jQ

主要活动:

        public void Downloaded()
    {
        CrossDownloadManager.Current.PathNameForDownloadedFile = new System.Func<IDownloadFile, string>(file =>
        {
            //here .doc just for test - full filename is 30.doc, will be changed. 
            string fileName = Android.Net.Uri.Parse(file.Url).Path.Split('/').Last() + ".doc";
            return Path.Combine(ApplicationContext.GetExternalFilesDir(Android.OS.Environment.DirectoryDownloads).AbsolutePath, fileName);
        });
        }

及下载方法:

    public async Task<Stream> DownloadDocument(int id)
    {
        await Task.Run(() =>
        {
            var downloadManager = CrossDownloadManager.Current;            
            var file = downloadManager.CreateDownloadFile(url);
            downloadManager.Start(file, true);
        });

        return null;
    }

问题是当我转到“下载”文件夹时无法打开文件。它具有适当的文件大小,但它的行为就像缺少文件类型。消息说“无法打开文件”。 如果我检查它的详细信息,则有类型:文件而不是类型:文档字。 如果我将此文件复制到其他文件夹,我可以在那里毫无问题地打开它。 不知道问题出在哪里:/

【问题讨论】:

  • 我在视频中测试了他的代码,得到的文件名为Unsuccessful。你的名字是一样的吗?
  • 我的名字是“30”,因为这是我在 uri 中的参数。这就是为什么我在 mainActivity 的文件名中添加“.doc”(仅用于测试,稍后将实现)。当然,我正在下载 .doc 文件。
  • 如果您下载的文件名正确,您可以更改其他路径下载文件。
  • 我必须保留下载文件夹。看起来文件以正确的名称保存,只是没有扩展名。如果我将此文件移动到另一个文件夹并将其移回“下载”,我可以打开它......我无法在下载后直接打开它。

标签: c# .net xamarin xamarin.android


【解决方案1】:

我在从 Azure Blob 存储下载文件时遇到了同样的问题。

万一其他人也有同样的问题,这个错误的原因是我最初将文件上传到容器时没有设置内容类型。一旦我分配了正确的内容类型 (MIME),下载的文件就会具有正确的类型。

如果您正在使用新的 Azure blob 客户端 SDK,请参阅此链接以获取有关在上传到容器时设置正确内容类型的指南:

https://github.com/Azure/azure-sdk-for-net/issues/9823

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-07
    • 1970-01-01
    相关资源
    最近更新 更多