【问题标题】:Download PDF and Word file in UWP在 UWP 中下载 PDF 和 Word 文件
【发布时间】:2017-08-03 12:53:34
【问题描述】:

目前我正在开发 UWP 应用程序,因为我需要将 pdf 和 word url 下载到系统下载文件夹,为此我正在尝试使用 backgrounddownloader 类,如下面的代码所示。

 Uri source = new Uri(selectedfile.DocumentPath);

            StorageFile destinationFile = await KnownFolders.PicturesLibrary.CreateFileAsync(
               selectedfile.DocumentName, CreationCollisionOption.GenerateUniqueName);

            BackgroundDownloader downloader = new BackgroundDownloader();
            DownloadOperation download = downloader.CreateDownload(source, destinationFile);

我也在尝试另一种下载网址的方法是代码

  var request = WebRequest.CreateHttp(selectedfile.DocumentPath);

            var sampleFile = await KnownFolders.PicturesLibrary.CreateFileAsync(selectedfile.DocumentName, CreationCollisionOption.GenerateUniqueName);
                var cli = new HttpClient();
                var str = await cli.GetStreamAsync(request.RequestUri);
                var dst = await sampleFile.OpenStreamForWriteAsync();
                await str.AsInputStream().AsStreamForRead().CopyToAsync(dst);

对于使用上述两种方法,url可以下载为pdf和word,但我试图打开pdf文件和word文件但无法打开,它显示如下图trying to open the open downloaded file it shown like this所示的错误。任何人都可以帮助解决这个问题。我想下载文件,下载的文件也应该是打开的。

【问题讨论】:

  • 你还没有发布完整的代码。使用第一种方法,是否等待下载完成?在第二个中,您是否关闭了目标流?
  • 感谢您的回复,第一种方法我不等下载,它会自动下载并显示图片文件夹中的文件,我不知道以上方法是否正确,我是只是尝试这些方法。
  • 应该是主机没有给你预期的文件,可能是一个html文件。用记事本打开下载的文件,你会发现,是不是这样。
  • 我正在尝试用记事本打开下载文件,如下代码所示。 %PDF-1.6 %âãÏÓ 191 0 obj >流 hÞ241Q0P°±Ñw.JM,ÉÌÏsI,IÕp±22046032022²tÌÕÔ5!ªò‹4\ Üt#œ3óÒSŒõ4õ}óS:ÍL Í Mt L :ŠòSJ“SѵšèlRˆÑÏÌKÉ//V¨03‰ÑÔ´³0 R)E endstream endobj 192 0 obj >流 hÞ,ޱ
  • 谁能告诉我上面的方法是下载文件的正确方法,还是在 UWP 中下载 PDF 和 Word 文件的任何其他方法

标签: c# pdf ms-word uwp


【解决方案1】:

BackgroundDownloader.CreateDownload 方法初始化一个 DownloadOperation 对象,该对象包含指定的 Uri 和写入响应的文件。

创建DownloadOperation 时,它不会启动下载操作。 我们应该可以使用DownloadOperation.StartAsync 开始下载操作。

例如:

Uri source = new Uri(selectedfile.DocumentPath);
StorageFile destinationFile = await KnownFolders.PicturesLibrary.CreateFileAsync("ab.pdf", CreationCollisionOption.GenerateUniqueName);
BackgroundDownloader downloader = new BackgroundDownloader();
DownloadOperation download = downloader.CreateDownload(source, destinationFile);
await download.StartAsync();

如果您想了解更多关于下载文件的详细信息,请参考Background transfer sample

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-09-01
    • 2015-05-27
    • 2016-07-02
    • 2014-03-23
    • 1970-01-01
    • 2021-02-16
    • 1970-01-01
    相关资源
    最近更新 更多