【发布时间】:2017-05-06 11:49:35
【问题描述】:
我正在尝试使用 this 和 this 获取 html 文件作为输出,但得到了 error 500
我的应用程序的目标是基于api请求,服务器将请求的输出生成为html文件,并将其发送给用户请求。
使用的代码是:
using Microsoft.AspNetCore.Mvc; // for Controller, [Route], [HttpPost], [FromBody], JsonResult and Json
using System.IO; // for MemoryStream
using System.Net.Http; // for HttpResponseMessage
using System.Net; // for HttpStatusCode
using System.Net.Http.Headers; // for MediaTypeHeaderValue
namespace server{
[Route("api/[controller]")]
public class FileController : Controller{
[HttpGet]
public HttpResponseMessage Get()
{
string r = @"
Hello There
";
var stream = new MemoryStream();
StreamWriter writer = new StreamWriter(stream);
writer.Write(r);
writer.Flush();
stream.Position = 0;
// processing the stream.
byte[] Content = convert.StreamToByteArray(stream);
var result = new HttpResponseMessage(HttpStatusCode.OK);
result.Content.Headers.ContentDisposition =
new System.Net.Http.Headers.ContentDispositionHeaderValue("attachment")
{
FileName = "welcome.html"
};
result.Content.Headers.ContentType =
new MediaTypeHeaderValue("application/octet-stream");
return result;
}
}
}
和:
using System.IO; // for MemoryStream
namespace server{
class convert{
public static byte[] StreamToByteArray(Stream inputStream)
{
byte[] bytes = new byte[16384];
using (MemoryStream memoryStream = new MemoryStream())
{
int count;
while ((count = inputStream.Read(bytes, 0, bytes.Length)) > 0)
{
memoryStream.Write(bytes, 0, count);
}
return memoryStream.ToArray();
}
}
}
}
我需要返回的结果是一个.html 文件,所以我可以使用var a = window.open(returnedFile, "name"); 之类的JavaScript 在新的浏览器窗口中打开它
【问题讨论】:
-
您想将页面作为附件发送吗?如果没有,那么这个答案应该可以帮助你stackoverflow.com/questions/38105305/…
-
@MarcusH 我明天会测试它,但它看起来会直接显示在浏览器中,我需要用户接收
file所以使用 JavaScript 我可以在另一个窗口中打开它比打开的像var a = window.open(url, "name"); -
流媒体是必要的吗?
-
@J.Doe 不确定,我刚刚在我的案例附近的另一个解决方案中找到了这个
标签: .net .net-core asp.net-core-webapi