使用asp.net在客户端计算机中下载并运行文件

时间:2012-06-21 09:00:45

标签: asp.net download

我正在尝试下载并运行文件到客户端计算机。客户知道这一点。 这是一个动态生成的ttkgp文件。 我已经尝试使用Processs.Start()在我的本地机器上工作正常(首先将文件保存到C:\然后将其打开),但它不能从服务器上运行。它不是我的服务器而是托管服务器。他们试图帮助但到目前为止没有运气。 我见过这段代码:

  public void ProcessRequest(HttpContext context)
  {
   string fileName = context.Request.QueryString["filename"];
   FileInfo fi = new FileInfo(fileName);
   context.Response.ContentType = "application/x-rar-compressed";

   context.Response.AppendHeader("Content-Disposition",
   string.Format("attachment; filename=download{0}", fi.Name));

   context.Response.WriteFile(fileName);
   context.Response.End();

}

但是因为我不知道什么是“HttpContext上下文”,我不知道它是否有效。 是否需要更改某些服务器的优势?或者只是这个代码可以解决问题吗?

谢谢

更新(24.6.12):我差不多完成了这个问题,我现在需要的是知道如何在新的标签/窗口中打开一个html页面,然后再关闭它。一旦我完成了,我会在这里回复所有的过程,我相信它会帮助其他人。

更新(26.6.12): 这是我得到的: 目标是从asp.net webiste下载TTKGP文件到本地用户计算机并运行它。 步骤1:在服务器(V)上生成代码为behaind(c#)的文件 第2步:将文件或其内容复制到用户计算机(X) 第3步:使用JS(V)

运行文件

这就是:我可以从服务器上的文本文件复制到用户计算机上的文本文件,但不能从TTKGP文件复制。这很奇怪,因为这只是文本文件只是一个不同的延伸。 复制文本文件的代码:

enter code here
    function copyremotetxt() // works
{   
// copy the txt file
var fso = new ActiveXObject("Scripting.FileSystemObject");

var newfile = fso.CopyFile("remote.txt", "C:\\Users\\***\\local.txt");
}

也许我可以在用户机器上更改文件类型?

注意1:我知道这是一个安全问题,该网站仅适用于已知用户而非公开用户 注意2:我知道有更好的方法可以完成任务,但对许多事情有严格的限制

感谢那些人可以提供帮助!!

2 个答案:

答案 0 :(得分:2)

这段代码可以解决问题。它将提示客户端将文件下载并保存在他决定的位置的计算机上。此文件接下来发生的是客户的决定,而不是您的决定。他可能只是关闭“另存为”对话框,中断下载,删除文件,......这取决于他。

另一句话:这段代码非常危险,因为它允许客户端传递他想要的任何文件名作为查询字符串参数并下载它。所以他可以完全读取服务器上的所有文件,这可能不是你想要发生的事情。

答案 1 :(得分:0)

好的,这需要一个不同的方法。 我将尝试使用JavaScript来读取服务器上的文件,在用户计算机中重写它并激活它。任何线索都会被扼杀!首先,如何在JS中读取文件?我是新手。