ASP.NET 本身不提供直接重命名上传文件的功能,但您可以通过以下方法实现文件重命名:
System.IO
命名空间中的 Path
和 File
类来生成新的文件名和路径。File.Move
方法将文件从原始位置移动到新位置。以下是一个简单的示例:
using System;
using System.IO;
using System.Web.Http;
public class UploadController : ApiController
{
private static readonly string UploadPath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "uploads");
public async Task<IHttpActionResult> Post()
{
if (!Request.Content.IsMimeMultipartContent())
{
return BadRequest("请上传文件");
}
var provider = new MultipartMemoryStreamProvider();
await Request.Content.ReadAsMultipartAsync(provider);
foreach (var file in provider.Contents)
{
if (file.Headers.ContentDisposition.FileName != null)
{
string fileName = Path.GetFileName(file.Headers.ContentDisposition.FileName);
string newFileName = GenerateNewFileName(fileName);
string filePath = Path.Combine(UploadPath, newFileName);
file.ReadAsByteArrayAsync().Result.SaveToDisk(filePath);
// 删除原始文件(可选)
string originalFilePath = file.Headers.ContentDisposition.FileName;
File.Delete(originalFilePath);
}
}
return Ok("文件上传成功");
}
private string GenerateNewFileName(string originalFileName)
{
// 在这里实现您的文件重命名逻辑,例如添加时间戳、随机数等
string extension = Path.GetExtension(originalFileName);
string newFileName = DateTime.Now.ToString("yyyyMMddHHmmssfff") + extension;
return newFileName;
}
}
在这个示例中,我们首先检查请求是否为多部分内容,然后使用 MultipartMemoryStreamProvider
读取上传的文件。对于每个文件,我们获取原始文件名,生成新的文件名,然后将文件保存到新的位置。最后,我们删除原始文件(可选)。