【问题标题】:How save file from server folder to local drive/client side?如何将文件从服务器文件夹保存到本地驱动器/客户端?
【发布时间】:2012-01-11 18:51:25
【问题描述】:

我在服务器上的某个文件夹中有一个形成的文件。我需要创建一些解决方案以允许用户将此文件本地保存在计算机上的驱动器上。

任何人都可以建议我如何做到这一点,我应该使用什么控制。

【问题讨论】:

  • 它不是在客户端保存的程序文件,如果我理解正确,用户将启动帖子中提到的过程。
  • 此文件是否托管在某个虚拟目录内的 IIS 服务器上?我希望这个文件不包含重要信息。

标签: c# asp.net


【解决方案1】:

这将打开浏览器另存为对话框:

 protected void Page_Load(object sender, EventArgs e)
{  

    FileStream fs = File.OpenRead(Server.MapPath("~/imgName.jpg"));
    byte[] buffer = new byte[(int)fs.Length];
    fs.Read(buffer, 0, (int)fs.Length);
    fs.Close();
    SetResponse("imgName");
    HttpContext.Current.Response.BinaryWrite(buffer);
    HttpContext.Current.Response.Flush();
    HttpContext.Current.Response.Close();
}

private static void SetResponse(string fileName)
{
    string attachment = "attachment; filename=" + fileName + ".jpg";
    HttpContext.Current.Response.Clear();
    HttpContext.Current.Response.ClearHeaders();
    HttpContext.Current.Response.ClearContent();
    HttpContext.Current.Response.AddHeader("content-disposition", attachment);
    HttpContext.Current.Response.ContentType = "image/jpeg";
    HttpContext.Current.Response.AddHeader("Pragma", "public");
}

尝试使用此权限打开 FileStream:

  FileStream fs = new FileStream(Server.MapPath("~/imgName.jpg"), FileMode.Open, FileAccess.Read, FileShare.Read);

【讨论】:

  • 正是我需要的。但现在在 FileStream fs = File.OpenRead(Server.MapPath("~/imgName.jpg"));它返回异常:文件已使用!我可以绕过那个吗?
  • 如果这不能解决问题,请发布上一段代码,您使用该文件的位置。
  • 文件NameDB.mdf文件,数据库。它在整个项目中使用。我尝试允许一些用户复制数据库文件。
【解决方案2】:

您只需将文件的链接放在 aspx 页面中即可。

<a href="path to your file on server">some text here</a>

当用户单击此链接时,他们将获得下载对话框,他们可以使用该对话框将文件保存到本地系统。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-01-04
    • 1970-01-01
    • 2011-10-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多