ASP.NET 文件操作
最后修改于 2025 年 4 月 3 日
在本文中,我们将使用 File 类在 ASP.NET 8 中探索文件操作。System.IO.File 类提供了用于文件创建、复制、删除和其他操作的静态方法。
ASP.NET 是一个用于构建现代 Web 应用程序的跨平台框架。文件操作对于处理上传、下载和数据存储至关重要。
基本定义
.NET 中的 File 类提供了用于文件操作的静态方法。它属于 System.IO 命名空间,并以平台无关的方式与文件系统进行交互。
文件操作包括创建、复制、移动、删除以及读/写文件。该类还提供了用于检查文件存在性及属性的方法。
在 ASP.NET 中,文件操作通常用于处理文件上传、提供下载、日志记录和配置。请始终妥善处理文件操作中的错误。
ASP.NET 文件示例
以下示例演示了 ASP.NET Web API 中的各种文件操作。
var builder = WebApplication.CreateBuilder(args); builder.Services.AddControllers(); var app = builder.Build(); app.MapControllers(); app.Run();
这设置了一个基本的 ASP.NET 应用程序,并支持控制器。MapControllers 方法为控制器启用属性路由。
using Microsoft.AspNetCore.Mvc;
using System.IO;
using System.Text;
[ApiController]
[Route("api/[controller]")]
public class FileController : ControllerBase
{
private readonly string _basePath = Path.Combine(Directory.GetCurrentDirectory(), "Files");
[HttpPost("upload")]
public async Task<IActionResult> UploadFile(IFormFile file)
{
if (file == null || file.Length == 0)
return BadRequest("No file uploaded");
Directory.CreateDirectory(_basePath);
var filePath = Path.Combine(_basePath, file.FileName);
using (var stream = new FileStream(filePath, FileMode.Create))
{
await file.CopyToAsync(stream);
}
return Ok(new { filePath, file.Length });
}
[HttpGet("download/{fileName}")]
public IActionResult DownloadFile(string fileName)
{
var filePath = Path.Combine(_basePath, fileName);
if (!System.IO.File.Exists(filePath))
return NotFound();
var fileStream = System.IO.File.OpenRead(filePath);
return File(fileStream, "application/octet-stream", fileName);
}
[HttpGet("info/{fileName}")]
public IActionResult GetFileInfo(string fileName)
{
var filePath = Path.Combine(_basePath, fileName);
if (!System.IO.File.Exists(filePath))
return NotFound();
var fileInfo = new FileInfo(filePath);
return Ok(new {
fileName,
fileInfo.Length,
fileInfo.CreationTime,
fileInfo.LastAccessTime
});
}
[HttpDelete("delete/{fileName}")]
public IActionResult DeleteFile(string fileName)
{
var filePath = Path.Combine(_basePath, fileName);
if (!System.IO.File.Exists(filePath))
return NotFound();
System.IO.File.Delete(filePath);
return NoContent();
}
}
此控制器演示了四种文件操作:上传、下载、获取信息和删除。_basePath 字段存储用于文件存储的目录。
UploadFile 方法使用 IFormFile 处理文件上传。如果 Files 目录不存在,它会创建该目录并保存上传的文件。
DownloadFile 方法从磁盘读取文件并将其作为下载返回。File 辅助方法创建适当的响应。
GetFileInfo 方法使用 FileInfo 检索文件元数据。DeleteFile 方法演示了带正确存在性检查的文件删除。
所有方法都包含适当的错误处理并返回相应的 HTTP 状态码。该示例同时展示了同步和异步文件操作。
来源
在本文中,我们探索了 ASP.NET 8 中的文件操作。File 类提供了强大的方法,可用于以跨平台的方式处理文件。