我正在使用.NET核心构建一个简单的API,并希望在到达API上的某个端点后向客户端发送一个简单的.json文件。
到目前为止,我的成功很少,但我目前的情况如下:
public IActionResult yaddayadda(){
var filePath = "./Data/file.json";
using (var stream = new FileStream(@filePath, FileMode.Open))
{
return new FileStreamResult(stream, "application/json");
}
}
这对我一无所获。 (文件的路径是正确的)
谢谢!
编辑:我已尝试过不同的内容类型,即使它不是正确的,但是multipart / form-data允许我下载文件,但它没有扩展名。答案 0 :(得分:4)
尝试这样做,避免流的处理(闭包):
public IActionResult yaddayadda()
{
var filePath = "./Data/file.json";
return this.PhysicalFile(filePath, "application/json");
}
更新:这是我用于图片的另一种方式,尽管应该表现相同:
<api xmlns="http://ws.apache.org/ns/synapse" name="synapse" context="/synapse">
<resource methods="GET" uri-template="/2">
<inSequence>
<property name="REST_URL_POSTFIX" value="hello/mkyongdemo" scope="axis2" type="STRING"/>
<log level="custom">
<property name="category" expression="$axis2:REST_URL_POSTFIX"/>
</log>
<property name="HTTP_METHOD" value="GET" scope="axis2" type="STRING"/>
<send>
<endpoint>
<address uri="http://localhost:8280/RESTfulExample/rest" format="pox"/>
</endpoint>
</send>
</inSequence>
</resource>
</api>
请注意,此解决方案意味着您从Controller类派生,因为“PhysicalFile”方法是公开的。
答案 1 :(得分:2)
尝试使用
byte[] fileBytes = System.IO.File.ReadAllBytes(filePath);
string fileName = "file.json";
return File(fileBytes, System.Net.Mime.MediaTypeNames.Application.Octet, fileName);
有用的link。