.NET 文件上传功能

可直接复制使用!!!

步骤1: 创建API端点

首先,我们需要创建一个API端点来处理文件上传请求。我们将使用HttpPost属性来定义一个名为UploadFile的POST方法。

[HttpPost("UploadFile")]
public async Task<AjaxResult> UploadFile(IFormFile file)
{
    // 方法实现将在后续步骤中展示
}

步骤2: 检查文件是否存在

在处理文件之前,我们需要确保上传的文件确实存在,并且不为空。这是防止错误和异常的重要步骤。

if (file == null || file.Length == 0)
{
    return new AjaxResult
    {
        Message = "未获取到文件!",
        Result = false
    };
}

步骤3: 生成文件的唯一名称

为了避免文件名冲突,我们将为每个上传的文件生成一个唯一的名称。这里我们使用当前日期和时间来生成文件名。

string fileName = "file_" + DateTime.Now.ToString("yyyyMMddmmss") + "_" + file.FileName;

步骤4: 确保目录存在

在保存文件之前,我们需要确保目标目录存在。如果不存在,我们将创建它。

var CreatefilePath = Path.Combine("File\\TaskManageFile\\", DateTime.Now.ToString("yyyyMMdd"));
if (!Directory.Exists(CreatefilePath))
{
    Directory.CreateDirectory(CreatefilePath);
}
步骤5: 保存文件

步骤5: 保存文件

现在,我们可以将文件保存到指定的目录。我们使用FileStreamCopyToAsync方法来实现这一点。

string filePath = Path.Combine(CreatefilePath, fileName);
using (var stream = new FileStream(filePath, FileMode.Create))
{
    await file.CopyToAsync(stream);
}

步骤6: 返回结果

最后,我们需要返回一个包含操作结果和文件路径的响应。

return new AjaxResult
{
    StatusCode = 200,
    Message = file.FileName,
    Value = filePath,
    Result = true
};

总代码 可直接复制使用

/// <summary>
        /// 上传文件
        /// </summary>
        /// <param name="file"></param>
        /// <returns></returns>
        /// <exception cref="Exception"></exception>
        [HttpPost("UploadFile")]
        public async Task<AjaxResult> UploadFile(IFormFile file)
        {
            try
            {
                AjaxResult AjaxResult = new AjaxResult();
                // 检查文件是否存在
                if (file == null || file.Length == 0)
                {
                    AjaxResult.Message = "未获取到文件!";
                    AjaxResult.Result = false;
                    return AjaxResult;
                }

                // 生成文件的唯一名称
                string fileName = "file_" + DateTime.Now.ToString("yyyyMMddmmss") + "_" + file.FileName;
                var CreatefilePath = Path.Combine("File\\TaskManageFile\\", DateTime.Now.ToString("yyyyMMdd"));
                // 确保目录存在
                if (!Directory.Exists(CreatefilePath))
                {
                    Directory.CreateDirectory(CreatefilePath);
                }
                string filePath = Path.Combine(CreatefilePath, fileName);
                // 保存文件到指定目录
                using (var stream = new FileStream(filePath, FileMode.Create))
                {
                    await file.CopyToAsync(stream);
                }
                AjaxResult.StatusCode = 200;
                AjaxResult.Message = file.FileName;
                AjaxResult.Value = filePath;
                AjaxResult.Result = true;
                return AjaxResult;
            }
            catch (Exception ex)
            {

                throw new Exception("上传错误,详细:" + ex.Message);
            }

        }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值