如何创建用于打开文档的可用 URL
本文关键字:文档 URL 用于 何创建 创建 | 更新日期: 2023-09-27 18:34:49
一般问题:我有一些代码需要PDF文件的URL。 它似乎适用于我在网上找到的 URL,但不适用于我自己创建的 URL。
例如,当我使用来自Xamarin的随机URL时,它可以正常工作,但是当我尝试从DropBox或Amazon Cloud Drive生成URL时,它不起作用。
示例网址:
这些链接打开无害的PDF文件。 请尝试一下:
- Xamarin(工作正常(
- 保管箱(不起作用(
- 亚马逊云驱动器(不起作用(
如您所见,在浏览器中(我使用 Chrome 进行测试(,您将打开 PDF 文档,但并非没有某种上下文(Xamarin 除外(。
代码:我正在MonoTouch
开发,我正在使用一个名为mTouch PDF Reader的组件。 代码很简单:
var documentViewController = new DocumentViewController (1, "Some name here", "http://someurlhere.pdf");
ActivateController (documentViewController);
这在我的应用程序中打开了一个不错的 PDF 阅读器,但是,由于我无法使用自己创建的 URL,这对我没有帮助。 这是一个第三方库,所以我不能看代码。 顺便说一下,当我使用我的一个 URL 时,代码会崩溃并带有以下堆栈跟踪的System.NullReferenceException
:
MonoTouch.Foundation.NSArray.FromNativeObjects (items={MonoTouch.UIKit.UIViewController[1]}, count=1) in /Developer/MonoTouch/Source/monotouch/src/shared/Foundation/NSArray.cs:109
MonoTouch.Foundation.NSArray.FromNativeObjects (items={MonoTouch.UIKit.UIViewController[1]}) in /Developer/MonoTouch/Source/monotouch/src/shared/Foundation/NSArray.cs:96
MonoTouch.Foundation.NSArray.FromNSObjects (items={MonoTouch.UIKit.UIViewController[1]}) in /Developer/MonoTouch/Source/monotouch/src/shared/Foundation/NSArray.cs:48
MonoTouch.UIKit.UIPageViewController.SetViewControllers (viewControllers={MonoTouch.UIKit.UIViewController[1]}, direction=MonoTouch.UIKit.UIPageViewControllerNavigationDirection.Forward, animated=false, completionHandler={MonoTouch.UIKit.UICompletionHandler}) in /Developer/MonoTouch/Source/monotouch/src/UIKit/UIPageViewController.g.cs:144
mTouchPDFReader.Library.Views.Core.DocumentViewController.ViewDidLoad () in
MonoTouch.UIKit.UIApplication.UIApplicationMain () in
MonoTouch.UIKit.UIApplication.Main (args={string[0]}, principalClassName=(null), delegateClassName="AppDelegate") in /Developer/MonoTouch/Source/monotouch/src/UIKit/UIApplication.cs:38
Exam936.Application.Main (args={string[0]}) in /Users/EdGriMac/Dropbox/Quiz/Code/Exam926/Exam936/Main.cs:16
挫败感:有没有一种特定的方法来创建以这种方式工作的 URL? 看起来DropBox确实做了一些不同的事情,因为它有点像iFrame文档或其他东西。 我不知道亚马逊云盘是做什么的。 Xamarin做了什么? 正如评论中指出的那样,是因为http
与https
吗?
我完全迷失了。 我错过了一些简单的东西吗? 您还有其他方法可以建议创建 URL 吗? 谷歌搜索这真的很困难,因为我继续点击如何在 Dropbox 中共享 URL 等示例......
顺便说一句,我不想将文档作为应用程序的一部分,因为这意味着我将不得不创建应用程序的新版本才能更改文档中的某些内容。
更新1:我在上面添加了链接。 我稍后会尝试其他一些建议,并会留下更多更新。 提前感谢您的任何进一步建议!
更新2:我使用Fiddler查看每个URL上的响应。 Xamarin URL已Content-Type: application/pdf
,而DropBox和Amazon Cloud Drive都Content-Type: text/html; charset=UTF-8
。 这解释了很多。 我将在今天晚些时候尝试 andersr 的建议,因为我确实有一个 Web 服务器来放置文件。
更新 3 当我将 PDF 文件放在我的 Amazon EC2 服务器上,在 IIS 中的网站下创建一个虚拟目录时,指向我的网站的 URL + 虚拟目录 + 文件名有效! 事实证明,必须application/pdf
Content-Type
,mTouch PDF Reader
才能通过 URL 打开它。
感谢大家的帮助!
在我看来,前两个URL直接链接到PDF文件,但后一个,即。 亚马逊云盘上的那个链接到一个页面,该页面再次链接到PDF。我建议以下潜在的解决方案:
- 找到一种可靠的方法来提取云驱动器上文档的直接URL。指向文档的链接不是您提供的链接,而是这个: 链接 .也许亚马逊有关于如何避免html界面以检索文件的文档。我对云驱动器一点也不熟悉。请注意,提供的 url 附加了一些有时间限制的令牌。
- 将文档托管在您可以更好地控制的基础结构上。即。设置您自己的 Web 服务器并在那里托管文档。或者使用另一个云存储提供商,它使您能够直接链接到文件。