簡體   English   中英

從ASP.NET將文件發送到桌面應用程序(客戶端)

[英]Sending a file to desktop application (client) from ASP.NET

我正在為桌面應用程序開發許可證。 一個簡單的工作流程:

  1. 用戶的詳細信息通過HttpPost方法提交到服務器(或其他)
  2. 服務器檢查詳細信息並生成文件。
  3. 服務器將文件發送給用戶(作為確認)

我需要有關步驟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();
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM