将文件从 ASP.NET 发送到桌面应用程序(客户端)
本文关键字:应用程序 桌面 客户端 文件 ASP NET | 更新日期: 2023-09-27 18:36:30
我正在为桌面应用程序开发许可。一个简单的工作流程:
- 用户的详细信息通过HttpPost方法提交到服务器(或其他)
- 服务器检查详细信息并生成文件。
- 服务器向用户发送文件(作为确认)
我需要有关步骤 3 - 如何将文件发送给用户的帮助?
例如,用户(HttpPost)
var client = new HttpClient();
var pairs = new List<KeyValuePair<string, string>>
{
new KeyValuePair<string, string>("serialNumber", "AAAA"),
new KeyValuePair<string, string>("email", "test@123"),
new KeyValuePair<string, string>("HWID", "AAAA-BBBB-CCCC-DDDD"),
};
var content = new FormUrlEncodedContent(pairs);
var response = client.PostAsync("https://localhost:44302/testCom.aspx", content).Result;
if (response.IsSuccessStatusCode)
{
//Code for file receiving?
}
服务器
protected void Page_Load(object sender, EventArgs e)
{
//Check license ID
//Issue license file - How to?
//Mark database
}
可以使用 Response 类将文件发送回客户端
Response.Clear();
Response.ClearHeaders();
Response.ClearContent();
Response.AddHeader("Content-Disposition", "attachment; filename=" + file.Name);
Response.AddHeader("Content-Length", file.Length.ToString());
Response.ContentType = "text/plain";
Response.Flush();
Response.TransmitFile(file.FullName);
Response.End();
private void sendFile(string path, string fileName)
{
FileStream fs = new FileStream(path, FileMode.Open);
streamFileToUser(fs, fileName);
fs.Close();
}
private void streamFileToUser(Stream str, string fileName)
{
byte[] buf = new byte[str.Length]; //declare arraysize
str.Read(buf, 0, buf.Length);
HttpContext.Current.Response.AddHeader("Content-Disposition", "attachment; filename=" + fileName);
HttpContext.Current.Response.AddHeader("Content-Length", str.Length.ToString());
HttpContext.Current.Response.ContentType = "application/octet-stream";
HttpContext.Current.Response.OutputStream.Write(buf, 0, buf.Length);
HttpContext.Current.Response.End();
}