По сути, мое приложение должно быть в состоянии обрабатывать загрузки больших файлов, и для этого я рассмотрел документы File uploads от Microsoft .
Здесь упоминаются загрузки больших файлов с потоковой передачей, которыезвучало хорошо, поэтому я скопировал код из документов.Однако моя проблема заключается в том, что я не могу получить исходные реквизиты загруженного файла (FileName, Length и т. Д.) Из HttpRequest.
Я уже пытался получить доступ к request.Form.Files
, но таким образом я получаю исключение:IOException: Unexpected end of Stream, the content may have already been read by another component.
Поскольку после этого я снова пытаюсь получить доступ к запросу.
Какой лучший способ получить FileName + Length после завершения загрузки (с потоковой передачей, конечно)?
Редактировать:
Код контроллера в настоящее время выглядит следующим образом:
[Authorize]
[Route("api/[controller]")]
public class FileController : Controller
{
private FileManagerDbContext _context;
public FileController(FileManagerDbContext context) {
_context = context;
}
[HttpPost("upload")]
[DisableFormValueModelBinding]
public async Task<IActionResult> Upload()
{
using (var stream = System.IO.File.Create("myfile.temp"))
{
await Request.StreamFile(stream);
}
var fileToSave = new File();
fileToSave.FileName = null;
fileToSave.FileSize = 0;
fileToSave.UploadDate = new DateTime();
_context.Files.Add(fileToSave);
_context.SaveChanges();
return Ok(fileToSave);
}
}
После завершения загрузки файла я хочу сохранить в своей базе данных минимальные метаданные о загруженном файле.Но я не могу получить необходимые свойства.