我将json文件发送到服务器,并希望读取两次。
[HttpPost]
public ActionResult CreateCases(string fileFormat, Guid key)
{
var file = Request.Files[0];
CheckFile(file);
Create(file);
return Json();
}
public object Check(HttpPostedFileBase file)
{
var stream = file.InputStream;
var serializer = new JsonSerializer();
using (var sr = new StreamReader(stream))
using (var jsonTextReader = new JsonTextReader(sr))
{
dynamic json = serializer.Deserialize(jsonTextReader);
...
}
}
public object Create(HttpPostedFileBase file)
{
var stream = file.InputStream;
var serializer = new JsonSerializer();
using (var sr = new StreamReader(stream))
using (var jsonTextReader = new JsonTextReader(sr))
{
dynamic json = serializer.Deserialize(jsonTextReader);
...
}
}
在Check
方法中file.ContentLength
=正确的值
在Create
方法中,file.ContentLength = 0
和json
变量已经= null
我做错了什么?预先感谢。
我在做什么错?
此:
我[...]想读两次[文件]
您的客户端仅将文件发送到您的Web应用程序一次,因此您只应阅读一次。
当然,您可以倒退输入流并似乎可以解决紧迫的问题,但这只会带来新的问题,因为现在您一次将整个文件存储在内存中,并且只有在读取了整个请求后,您的代码才能继续。
您不想想要两次读取文件。
[如果要验证,则处理JSON,然后获取JSON,将其存储在变量中,然后验证并处理该变量。是的,这仍然需要您阅读整个请求正文,但这就是您的要求。