【问题标题】:Sending file through API endpoint通过 API 端点发送文件
【发布时间】:2018-07-17 13:34:48
【问题描述】:

我正在使用 .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 允许我下载文件,但它没有扩展名。

【问题讨论】:

  • 我会避免“使用”,因为它会在真正发送之前关闭流。
  • 对不起,你能告诉我你会采用的方法吗?

标签: c# .net .net-core


【解决方案1】:

通过避免处理(因此关闭)流来试试这个:

public IActionResult yaddayadda(){
    var filePath = "./Data/file.json";

    var stream = new FileStream(@filePath, FileMode.Open);
    return new FileStreamResult(stream, "application/json");
}

更新:这是我对图片使用的另一种方式,尽管行为应该相同:

    public IActionResult yaddayadda()
    {
        var filePath = "./Data/file.json";
        return this.PhysicalFile(filePath, "application/json");
    }

请注意,此解决方案意味着您是从 Controller 类派生的,因为“PhysicalFile”方法是由 公开的。

【讨论】:

  • 这不会发送实际文件,而是在回复中给我文件的内容。它有点工作,但我们希望发送实际文件
  • 更新也不起作用。感谢您迄今为止的所有帮助!
  • 我想给你的最后一个提示是关于文件的,因为我在处理错误的编码文本文件时遇到了一些麻烦。检查文件的编码,并尝试修补它以防万一(例如,您可以使用 Notepad++)。我建议使用 BOM 编码为 UTF-8。
  • 该文件非常简单,它只有一个带有属性的简单对象。我尝试了不同的内容类型,即使它不是正确的,multipart/form-data 允许我下载文件,但它没有扩展名。我必须找出正确的一个
【解决方案2】:

尝试使用

byte[] fileBytes = System.IO.File.ReadAllBytes(filePath);
string fileName = "file.json";
return File(fileBytes, System.Net.Mime.MediaTypeNames.Application.Octet, fileName);

有用的link

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-01-03
    • 2016-03-23
    • 2011-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-26
    • 1970-01-01
    相关资源
    最近更新 更多