可直接复制使用!!!
步骤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: 保存文件
现在,我们可以将文件保存到指定的目录。我们使用FileStream
和CopyToAsync
方法来实现这一点。
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);
}
}