netcore WeAPI 实现上传文件接口;同时提供调用C#后端调用示例;代码增加注释
时间: 2024-03-20 21:44:01 浏览: 113
.NET webapi实现文件上传功能
4星 · 用户满意度95%
好的,以下是实现上传文件接口的示例代码,同时附带调用示例和注释:
```csharp
// 文件上传处理接口
[HttpPost("upload")]
public async Task<IActionResult> Upload(IFormFile file)
{
// 判断文件是否为空
if (file == null || file.Length == 0)
return BadRequest("文件为空");
// 生成文件名
var fileName = Guid.NewGuid().ToString() + Path.GetExtension(file.FileName);
// 拼接文件保存路径
var filePath = Path.Combine(_env.WebRootPath, "uploads", fileName);
// 保存文件到指定路径
using (var stream = new FileStream(filePath, FileMode.Create))
{
await file.CopyToAsync(stream);
}
// 返回上传成功信息
return Ok(new { fileName });
}
```
上述代码实现了一个基本的文件上传接口,接收客户端传来的文件,保存到指定目录下,并返回文件名给客户端。下面是一个调用该接口的示例:
```csharp
using System.IO;
using System.Net.Http;
using System.Threading.Tasks;
public async Task UploadFile(string filePath)
{
// 创建 HttpClient 实例
using var client = new HttpClient();
// 创建一个表单数据对象
using var formData = new MultipartFormDataContent();
// 添加文件流到表单数据对象
using var fileStream = new FileStream(filePath, FileMode.Open);
formData.Add(new StreamContent(fileStream), "file", Path.GetFileName(filePath));
// 发送 HTTP POST 请求,并获取响应结果
using var response = await client.PostAsync("https://example.com/api/upload", formData);
var result = await response.Content.ReadAsStringAsync();
// 输出响应结果
Console.WriteLine(result);
}
```
上述代码演示了如何使用 HttpClient 发送一个文件上传请求,其中 `filePath` 参数为本地文件路径,需要注意的是,该示例代码需要在 .NET Core 3.0 或更高版本的控制台应用程序中运行,因为它使用了 C# 8.0 的新特性。最后,附上上述代码的注释,以供参考:
```csharp
using System.IO;
using System.Net.Http;
using System.Threading.Tasks;
public async Task UploadFile(string filePath)
{
// 创建 HttpClient 实例
using var client = new HttpClient();
// 创建一个表单数据对象
using var formData = new MultipartFormDataContent();
// 添加文件流到表单数据对象
using var fileStream = new FileStream(filePath, FileMode.Open);
formData.Add(new StreamContent(fileStream), "file", Path.GetFileName(filePath));
// 发送 HTTP POST 请求,并获取响应结果
using var response = await client.PostAsync("https://example.com/api/upload", formData);
var result = await response.Content.ReadAsStringAsync();
// 输出响应结果
Console.WriteLine(result);
}
```
阅读全文