我正在尝试使用这个和这个来获得一个html文件作为输出,但是遇到了
我的应用程序的目标基于api请求,服务器将生成所请求的输出作为html文件,并将其发送给用户请求。
使用的代码如下:
我需要返回的结果是一个
错误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
文件,这样我就可以使用 JavaScript 打开一个新的浏览器窗口,例如 var a = window.open(returnedFile, "name");
。
file
,所以使用 JavaScript 我可以在另一个窗口中打开它,而不是在已打开的窗口中,例如var a = window.open(url, "name");
。 - Hasan A Yousef