从文件流中读取内容c#

Reading content from a file stream c#

我有一个接受文件上传的网络 api 服务。该文件的内容是一个小 JSON 字符串,如下所示:

{ "name":"John", "age":31, "city":"New York" }

当文件内容是流时,我如何获取它,而不是必须将流作为文件保存在 Web 服务器上,然后再打开文件?

以下是我的摘录:

byte[] fileData = null;
using(var binaryReader = new BinaryReader(httpRequest.Files[0].InputStream))
{
      fileData = binaryReader.ReadBytes(httpRequest.Files[0].ContentLength);
}

我正在使用 4.0 .NET Framework

您可以使用 StreamReader class。试试这个代码:

using (var reader = new StreamReader(httpRequest.Files[0].InputStream))
{
    var content = reader.ReadToEnd();
    var json = JObject.Parse(content);
    var name = json["name"];
}

另一种选择是为您的 json 创建一个 class(手动或通过 http://json2csharp.com/):

public class Person
{
    public string name { get; set; }
    public int age { get; set; }
    public string city { get; set; }
}

然后将您的代码更改为:

using (var reader = new StreamReader(httpRequest.Files[0].InputStream))
{
    var content = reader.ReadToEnd();
    var person = JsonConvert.DeserializeObject<Person>(content);
    var name = person.name;
}