using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Net.Http;
using System.Text;
using System.Threading.Tasks;
using System.Web;
using System.Web.Http;
using XdCxRhDW.WebApi;
namespace XdCxRhDW.WebApi
{
///
///文件上传接口
///
public class FileController : BaseController
{
private readonly string uploadFolder;
///
///
///
public FileController()
{
this.uploadFolder = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "wwwroot");
}
///
/// 上传文件(返回上传后的文件名)
///
///
[HttpPost, SwaggerForm]
public async Task> UploadFileAsync()
{
if (!Request.Content.IsMimeMultipartContent("form-data"))
{
return Error("请求数据不是form-data类型");
}
var provider = new MultipartMemoryStreamProvider();
await Request.Content.ReadAsMultipartAsync(provider);
Directory.CreateDirectory(uploadFolder);
var content = provider.Contents.First();
var fileName = Guid.NewGuid().ToString() + ".dat";
var fileData = await content.ReadAsByteArrayAsync();
// 将文件保存到本地文件夹中
var filePath = Path.Combine(uploadFolder, fileName);
if (File.Exists(filePath))
{
XdCxRhDW.Framework.LogHelper.Warning($"文件[{filePath}]已存在!");
}
using (var fileStream = new FileStream(filePath, FileMode.Create))
{
await fileStream.WriteAsync(fileData, 0, fileData.Length);
}
return Success(fileName);
}
///
/// 批量删除文件
///
/// 参数文件参数模型
/// 返回删除成功的文件个数
[HttpPost]
public AjaxResult DeleteFiles(FileDeleteDto dto)
{
if(dto.Files==null||dto.Files.Count==0)return Success(0);
int count = 0;
foreach (var fileName in dto.Files)
{
try
{
var file = Path.Combine(uploadFolder, fileName);
if (File.Exists(file))
{
File.Delete(file);
count++;
}
}
catch (Exception ex)
{
XdCxRhDW.Framework.LogHelper.Error($"删除文件[{fileName}]失败!",ex);
}
}
return Success(count);
}
}
}