在ASP.NET Core中,文件上传和下载可以通过以下方式实现:
文件上传:
<input type="file">
元素用于用户选择要上传的文件。IFormFile
类型的参数来接收上传的文件数据。FileStream
或MemoryStream
等类来将上传的文件保存到服务器的指定位置。示例代码:
[HttpPost]
public async Task<IActionResult> UploadFile(IFormFile file)
{
if (file == null || file.Length == 0)
{
return BadRequest("Invalid file");
}
var filePath = Path.Combine(Directory.GetCurrentDirectory(), "uploads", file.FileName);
using (var stream = new FileStream(filePath, FileMode.Create))
{
await file.CopyToAsync(stream);
}
return Ok();
}
文件下载:
PhysicalFileProvider
和FileContentResult
类来提供要下载的文件数据。File
类型的ActionResult
对象,该对象包含要下载的文件路径和MIME类型。示例代码:
public IActionResult DownloadFile(string fileName)
{
var filePath = Path.Combine(Directory.GetCurrentDirectory(), "uploads", fileName);
if (!System.IO.File.Exists(filePath))
{
return NotFound();
}
var provider = new PhysicalFileProvider(Directory.GetCurrentDirectory());
var fileInfo = provider.GetFileInfo(fileName);
var fileStream = System.IO.File.OpenRead(filePath);
return File(fileStream, "application/octet-stream", fileName);
}
以上是ASP.NET Core中文件上传与下载的简单示例,实际应用中可能还需要考虑文件大小限制、文件类型限制、文件存储路径等问题。