このコード
string xml = XmlHelper.ToXml(queryTemplate);
byte[] xmlb = StringHelper.GetBytes(xml);
var cd = new System.Net.Mime.ContentDisposition
{
// for example foo.bak
FileName = String.Format("{0}_v{1}.xml", queryModel.Name, queryModel.Version),
// always prompt the user for downloading, set to true if you want
// the browser to try to show the file inline
Inline = false,
};
Response.AppendHeader("Content-Disposition", cd.ToString());
return File(xmlb, "application/xml");
に変換した後、文字列のエンコーディングが正しくないことが判明しましたbyte[]
したがってstring
、このようにすぐにファイルに入れる必要があります
FileStream xfile = new FileStream(Path.Combine(dldir, filename), FileMode.Create, System.IO.FileAccess.Write);
hssfwb.Write(xfile);
しかし、私はこれをしたくありません。ダウンロード後のファイルは必要ありません。ファイルのダウンロードとしてブラウザに返す必要があるだけで、後でファイルの削除に対処する必要はありません。これは、多くのリクエストがあるとかなり忙しくなる可能性があります。
からの文字エンコーディングを修正string
しbyte[]
、ブラウザに正しく返す方法は?
関数は次のGetBytes
ようになります
public static byte[] GetBytes(string str)
{
byte[] bytes = new byte[str.Length * sizeof(char)];
System.Buffer.BlockCopy(str.ToCharArray(), 0, bytes, 0, bytes.Length);
return bytes;
}