0

我想获取 VHD 驱动器的服务器路径。我正在开发 azure web 应用程序。我上传了一些文件并将其保存到 Test.VHD 驱动器中(比如说)。这是一些 blob 容器“驱动器”(例如)内的云驱动器。我通过以下方式安装和映射它:

driveLetter = drive.Mount(localCache.MaximumSizeInMegabytes - 20, DriveMountOptions.Force);

“driveLetter”是“A:\”(比如说)。现在我将所有 pdf 文件名显示为页面上的链接按钮。单击这些文件时,我想使用 javascript 函数在浏览器中打开该 pdf 文件

window.open(pdfPath, pdfName, 'scrollbars=yes, resizable=yes');

我的问题是我必须作为“pdfPath”参数传递什么?

我有路径“A:\Uploads\pdfName.pdf”。但我不能通过它。我必须像http://servername:port/path一样传递它,以便用户可以查看它。

但我不知道如何将其转换为http://servername:port/path之类的链接。通过这样做,我可以在浏览器中查看 pdf。

请帮我,

提前致谢。

4

2 回答 2

0

那里有一个小混乱。

从技术上讲,Azure 驱动器是存储在 Azure Blob 存储中的 Blob,因此它具有 URL。相比之下,无法使用 URL 直接访问 Azure 驱动器的内容。如果要公开 Azure 驱动器中包含的文件,则必须使它们可以从 Windows Azure 实例访问。

您可以通过在装载驱动器时将 Azure 驱动器映射为 IIS 中的虚拟文件夹来执行此操作。如果您在 .Net 中编码,请查看 System.Web.Administration(您必须将其包含在您的项目中,它是 IIS 的一部分,而不是直接包含在 CLR 中)。如果您使用其他语言编写代码,最简单的方法是调用 appcmd.exe 来定义虚拟文件夹。

皮埃尔

于 2012-04-05T18:05:59.677 回答
0

我意识到这并不能直接回答你的问题,但是......我认为你会通过写 Azure Drives 看到你正在做的事情的一些限制:

  • 在任何给定时间,只有一个 Role 实例可以对 vhd 具有写访问权限。这意味着您的解决方案可以扩展到一个实例之外,除非您每个实例都有一个唯一的 vhd(或者每个 add'l 实例只是创建一个只读快照)
  • 您现在必须通过您的角色实例来访问单个文件,因为您无法提供指向外部世界的 vhd 内文件的直接链接
  • 要管理任何文件,您必须安装 Azure 驱动器。这意味着您无法从 Windows Azure 之外的代码管理任何文件(Azure 驱动器只能由 Windows Azure 角色实例安装)

我建议将单个文件写入单个 blob。与在您的方案中使用 Azure 驱动器相比,这有几个优点:

  • 任何实例都可以读/写每个单独的文件(每个文件在一个单独的 blob 中)
  • 您可以选择在您的网页中嵌入直接文件 url。这提供了对 blob 的直接访问,而无需通过您的角色实例之一进行路由(由于不需要 IIS,这反过来又减轻了所述实例的负载)
  • You can choose to make individual blobs private, and still provide url's to private blobs, via Shared Access Signatures
  • You can manage individual blobs remotely, and there are several 3rd-party tools available to help you do this.
  • If you wanted to, you could enable CDN (edge caching) for your storage, which then lets you point your URL's to a CDN link instead of directly to the source blob. This is limited to public-facing blobs.
于 2012-04-07T02:11:04.610 回答