繁体   English   中英

如何获取从另一个驱动器下载文件的绝对路径?

[英]How to get absolute path for file download from another drive?

我需要给D:驱动器中的pdf文件提供下载链接。

我的网站托管在同一系统的C:驱动器中。

如何在我的网站中以C:驱动器托管的D:驱动器中给我的pdf文件下载链接?

通常,我尽量不要直接暴露可下载文件。

相反,我编写了一个ASHX处理程序(在Visual Studio中为“通用处理程序”),该处理程序将文件提取并将其发送到用户的浏览器。

基本上,您将唯一的ID传递给处理程序(例如,纯文件名),然后处理程序执行其余操作以在本地获取文件并将其流式传输到浏览器,如以下伪代码所示:

public class MyHandler :
    IHttpHandler
{
    public void ProcessRequest(HttpContext context)
    {
        var fileName = Request[@"fn"];
        var filePath = Path.Combine(@"C:\My\Fixed\File\Path", fileName );

        Response.ContentType = @"application/pdf";

        Response.AddHeader(
            @"Content-Disposition", 
            @"attachment; filename=" + Path.GetFileName(filePath));
        Response.AddHeader(
            @"Content-Length",
            new FileInfo(filePath).Length );

        Response.WriteFile(filePath);
        Response.End();
    }

    public bool IsReusable
    {
        get { return false; }
    }
}

这种方法的优点是您可以完全控制是否下载文件以及如何下载文件。 一些方案包括:

  • 权限检查用户是否已登录并可以下载文件。
  • 用不同的文件名流式传输到客户端。
  • 将文件下载到数据库。
  • ...

您可以使用NTFS交接点将当前为D:的驱动器安装到C:驱动器内的文件夹,这将使您的D:驱动器看起来像是C:驱动器的一部分。 解决所有问题。

可以在Microsoft TechNet文档中心找到mklink使用详细信息,该程序是Windows附带的程​​序,用于简化各种链接(包括结点)的创建,管理和删除。

另外,您可能对符号链接和硬链接感兴趣,它们本质上相似(尽管有细微的差别)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM