我正在使用C#中的服务器端项目,该项目接收来自各个终端的请求以下载特定文件。为此,在服务器端,我正在创建一个Web应用程序来处理来自客户端的HTTP请求。如何发送文件(以字节为单位)作为响应?
namespace WebApplication1
{
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
//get parameters
string str = Request.QueryString["param1"];
//process parameters received
//send FILE in response
Response.Clear();
Response.WriteFile(@"C:\Users\Xyz\Desktop\xyz.xml");
}
}
}
上面的代码会发送带文件的默认响应对象,但我只想发送没有任何默认响应的FILE。
答案 0 :(得分:3)
你最好为这份工作写generic ASHX handler
。这比整个WebForm更轻量级(实际上它是一个通用的处理程序,但为此目的不需要大量额外的垃圾)
public class DownloadFileHandler : IHttpHandler
{
public void ProcessRequest(HttpContext context)
{
//get parameters
string str = context.Request.QueryString["param1"];
//process parameters received
// set content type
context.Response.ContentType = "text/xml";
//send FILE in response
context.Response.WriteFile(@"C:\Users\Xyz\Desktop\xyz.xml");
}
public bool IsReusable
{
get { return true; }
}
}
然后您可以使用来自客户端的http://example.com/downloadfile.ashx?param1=value1
。