2012-10-24 33 views
0

嗨,我需要编写一个下载功能,以便当我的网站的用户点击一个按钮时,该文件被下载到那里的PC。将Web服务器上文件的下载功能写入客户端PC。

如果我用这个作为一个链接,然后将文件下载:

http://formvalue.co.za/download/" + fileName + ".xlsx" 

但我不能以后做任何事情,所以我需要这样的功能,这样我可以将文件删除掉我的服务器下载完成后的状态。

我使用的是MVC,所以函数可以在Jquery或C#中。

任何人都可以请帮忙,如果您需要任何信息,请提前致谢。

+0

链接是否必须匹配确切格式?这会工作吗? http://formvalue.co.za/download?file=whatever.xlsx – Nuzzolilo

+0

会怎样?而不是/做? – Pomster

+0

什么都不是自己的,这是一个直接的问题... – Nuzzolilo

回答

1

你可以简单地使用一个LinkBut​​ton回发到服务器并调用以下方法吗?

internal static void ContentToBrowser(string contentType, string filename, string content) 
     // Send to browser 
     var response = HttpContext.Current.Response; 
     response.Clear(); 
     response.ContentType = contentType; 
     response.AddHeader("Content-Disposition", 
        String.Format("attachment; filename=\"{0}\"", filename)); 
     var contentLength = response.ContentEncoding.GetByteCount(content); 
     response.AddHeader("Content-Length", contentLength.ToString()); 
     response.Write(content); 
     response.End(); 
} 

这可以让你所需要的内容直接写回客户端,无需担心存储在服务器上。例如

protected void LinkButtonClick(object sender, EventArgs e) 
{ 
    string filename = @"c:\filepath\blah.xlsx"; 
    string content = File.ReadAllText(filename); 
    ContentToBrowser("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", "downloaded-blah.xlsx", content); 
    File.Delete(filename); 
} 

但是,我不得不质疑你之后删除文件的动机。你怎么知道它已被客户端成功下载和存储?

+0

但该文件在我的服务器上,我想下载到客户端,我不确定这段代码做了什么? – Pomster

+0

上面的代码会将文件的内容直接写回给客户端,并指定文件名和contentType。如果该文件位于服务器上,则可以读取该文件,然后使用此方法将其返回给客户端,然后将其删除。 – CalC

+0

那么内容类型和内容是什么? – Pomster

相关问题