【问题标题】:Download file to client PC in ASP.NET using VB.NET使用 VB.NET 在 ASP.NET 中将文件下载到客户端 PC
【发布时间】:2012-12-24 10:31:14
【问题描述】:

我正在开发一个只能在我们组织内部访问的网站。

我想实现一个功能,客户端将从服务器下载文件(Visio File *.vsd)并将其保存到任何位置。

我遇到了一个解决方案:

dim wc as new WebClient ()

wc.downloadFile(src,dest)

但是,此解决方案不会提示另存为对话框(我想要在我的应用程序中使用)。另外我应该知道客户PC上保存文件的路径,以便可以将路径保存在数据库中。

(供参考:我想实现类似于VSS的功能。)

【问题讨论】:

    标签: asp.net vb.net download dialog


    【解决方案1】:

    在 ASP.NET 中,如果您想将文件流式传输到客户端并让“另存为”对话框提示用户选择一个位置,则您必须设置正确的 Content-Type 和 Content-Disposition 响应标头,然后编写文件直接到响应流:

    例如:

    protected void SomeButton_Click(object sender, EventArgs e)
    {
        // TODO: adjust the path to the file on the server that you want to download
        var fileToDownload = Server.MapPath("~/App_Data/someFile.pdf");
    
        Response.ContentType = "application/octet-stream";
        var cd = new ContentDisposition();
        cd.Inline = false;
        cd.FileName = Path.GetFileName(fileToDownload);
        Response.AppendHeader("Content-Disposition", cd.ToString());
    
        byte[] fileData = System.IO.File.ReadAllBytes(fileToDownload);
        Response.OutputStream.Write(fileData, 0, fileData.Length);
    }
    

    现在,当这段代码执行时,文件将被发送到客户端浏览器,客户端浏览器会提示将其保存在他计算机上的特定位置。

    不幸的是,出于安全原因,您无法捕获客户选择在其计算机上存储文件的目录。此信息永远不会通过网络传输,并且您无法在 ASP.NET 应用程序中知道它。因此,您将不得不寻找其他方法来获取此信息,例如要求客户在某个文本框或其他字段中输入它。

    【讨论】:

    • @NK- 在你尝试之后,什么?不投票,不接受?如果工作没有 cmets,或者您面临哪些其他问题?
    • 我试过了......如果我正在设置内容类型,我遇到了问题。会告诉你我哪里出错了。谢谢
    • 你遇到了什么问题?你能再精确一点吗?如果您不提供更多详细信息,真的很难提供帮助。
    • 问题和标签指定vb,那你为什么要发布C#代码作为答案呢?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多