读取后 HttpPostedFileBase ContentLength = 0
HttpPostedFileBase ContentLength = 0 after reading
我将 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
我做错了什么?
提前致谢。
What am I doing wrong?
这个:
I [...] want to read that [file] twice
您的客户端只将文件发送到您的网络应用程序一次,因此您应该只读取一次。
当然,您可以倒回输入流并似乎可以解决眼前的问题,但这只会引入新的问题,因为现在您立即将整个文件放在内存中 - 并且您的代码只能在整个请求完成后继续已阅读
您不想读取文件两次。
如果要验证,则处理JSON,然后获取JSON,将其存储在变量中,然后验证并处理该变量。是的,这仍然需要您阅读整个请求正文,但这就是您的要求。
我将 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
我做错了什么? 提前致谢。
What am I doing wrong?
这个:
I [...] want to read that [file] twice
您的客户端只将文件发送到您的网络应用程序一次,因此您应该只读取一次。
当然,您可以倒回输入流并似乎可以解决眼前的问题,但这只会引入新的问题,因为现在您立即将整个文件放在内存中 - 并且您的代码只能在整个请求完成后继续已阅读
您不想读取文件两次。
如果要验证,则处理JSON,然后获取JSON,将其存储在变量中,然后验证并处理该变量。是的,这仍然需要您阅读整个请求正文,但这就是您的要求。