asp.net

asp.netpost 能进行文件重命名吗

小樊
81
2024-12-06 10:50:04
栏目: 编程语言

ASP.NET 本身不提供直接重命名上传文件的功能,但您可以通过以下方法实现文件重命名:

  1. 首先,从请求中获取上传的文件。
  2. 然后,使用 System.IO 命名空间中的 PathFile 类来生成新的文件名和路径。
  3. 接下来,使用 File.Move 方法将文件从原始位置移动到新位置。
  4. 最后,删除原始文件(可选)。

以下是一个简单的示例:

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 读取上传的文件。对于每个文件,我们获取原始文件名,生成新的文件名,然后将文件保存到新的位置。最后,我们删除原始文件(可选)。

0
看了该问题的人还看了