在ASP.NET后端项目中处理uni-app小程序上传的文件,你可以使用ASP.NET Core的API功能。以下是一个简单的示例,展示了如何在ASP.NET Core中接收和保存上传的文件。
首先,确保你的ASP.NET Core项目已经安装并配置了Microsoft.AspNetCore.Http
包。
然后,在你的Controller中添加一个接收文件的Action方法:
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using System.IO;
using System.Threading.Tasks;
[Route("api/[controller]")]
[ApiController]
public class UploadController : ControllerBase
{
[HttpPost("upload")]
public async Task<IActionResult> Upload(IFormFile file)
{
if (file == null || file.Length == 0)
{
return BadRequest("No file uploaded.");
}
var path = Path.Combine(Directory.GetCurrentDirectory(), "uploads", file.FileName);
using (var stream = new FileStream(path, FileMode.Create))
{
await file.CopyToAsync(stream);
}
return Ok(new { file.FileName, file.ContentType, file.Length });
}
}
这个Action方法接收一个IFormFile
类型的参数,这是ASP.NET Core用于处理上传文件的标准方式。当uni-app小程序上传文件时,它会以multipart/form-data
格式发送数据,ASP.NET Core的模型绑定器会自动解析这些数据,并将文件作为IFormFile
对象提供给你的Action方法。
在uni-app小程序中,你可以使用uni.uploadFile
方法来上传文件:
uni.chooseImage({
success: chooseImageRes => {
const tempFilePaths = chooseImageRes.tempFilePaths;
uni.uploadFile({
url: 'https://your-backend-api-url.com/api/upload/upload', // 你的后端API地址
filePath: tempFilePaths[0],
name: 'file', // 这里的name必须和后端的参数名一致
formData: {
'user': 'test' // 其他要传的参数
},
success: uploadFileRes => {
console.log(uploadFileRes.data);
}
});
}
});
确保替换url
为你的实际后端API地址,并且name
属性与你的Action方法中的参数名称相匹配。
以上代码提供了一个简单的示例,展示了如何在uni-app小程序中上传文件,以及如何在ASP.NET Core后端接收和保存这些文件。