从其他服务器上的url下载文件"主机下载" - asp.net mvc

时间:2015-11-20 20:31:01

标签: c# asp.net-mvc download host

为了从我的服务器下载文件,我在asp.net MVC中使用这个方法:

string fileName = "SAMSUNG.zip";
string path = @"D:\Tutorial MVC5\ContosoUniversity\ContosoUniversity\dlfile\";
string fullPath = path + fileName;
Response.Clear();
Response.AppendHeader("Content-Disposition", "attachment; filename=" + fileName);
Response.ContentType = "application/x-zip-compressed";
Response.WriteFile(fullPath);
Response.End();

但是,当我想从其他服务器下载文件时,例如从主机下载&#34;。我怎样才能做到这一点?例如,我的下载直接链接是:http://dl.test.com/file.zip, 现在用户点击链接<a href="http://test.com/1">file.zip</a>即可下载文件。现在我想向用户发送file.zip,而用户不知道我的可信链接在哪里以及主机下载的位置。她或他只是选择要下载的文件。

感谢您的帮助!

2 个答案:

答案 0 :(得分:3)

您熟悉如何使用和/或设置Request.Params 如果你想检查QueryString

,你的网址最初应该是这样的

http://dl.test.com?file_name=SAMSUNG.zip

if(Request.Params["file_name"] == "SAMSUNG.zip"
{
    Uri uri = new Uri("http://dl.test.com/file.zip");
    using (var wc = new WebClient())
    using (var download = wc.OpenRead(uri))
    using (var respStream = Response.OutputStream)
    {
        download.CopyTo(respStream);
    }
}   

答案 1 :(得分:0)

你好,我在 .net Core 5 中使用了下一个代码

[HttpGet("Descargar")]
public FileResult Descargar(string url,string nombre)
{
    Uri uri = new Uri(url);
    WebClient wc = new WebClient();
    Stream downloadStream = wc.OpenRead(uri);
    MemoryStream ms = new MemoryStream();
    downloadStream.CopyTo(ms);
        
    return File(ms.ToArray(), System.Net.Mime.MediaTypeNames.Application.Octet, nombre);
}