首先我使用的上传以及下载图片的方法
/// <summary>
/// 上传功能
/// </summary>
//[RequestFormLimits(ValueLengthLimit = int.MaxValue, MultipartBodyLengthLimit = long.MaxValue)]
[HttpPost]
[RequestSizeLimit(long.MaxValue)] //默认是上传30M,加上之后可,可以增大
public IActionResult Upload([Required] List<IFormFile> formFiles)
{
string subDirectory = "images";//保存到当前根目录的文件名(跟下载的路径对应,Download方法下载时传入images/图片.jpg)
try
{
if (formFiles.Count > 0)
{
fileService.UploadFile(formFiles, subDirectory);
return Ok(new { formFiles.Count, Size = fileService.SizeConverter(formFiles.Sum(f => f.Length)), formFiles[0].FileName });
}
return Ok(new { formFiles.Count, Size = fileService.SizeConverter(formFiles.Sum(f => f.Length)) });
}
catch (Exception ex)
{
return BadRequest(ex.Message);
}
}
/// <summary>
/// 下载功能
/// </summary>
/// <param name="subDirectory">下载文件夹的路径或者下载的文件路径(当前部署路径根目录下的文件路径)</param>
/// <returns></returns>
[HttpGet]
public IActionResult Download([Required] string subDirectory)
{
try
{
var (fileType, archiveData, archiveName) = fileService.DownloadFiles(subDirectory);
return File(archiveData, fileType, archiveName);
}
catch (Exception ex)
{
return BadRequest(ex.Message);
}
}
使用此方法上传后,会默认在发布接口的根目录创建一个images文件夹存放上传的图片,如果我们直接用发布服务器的域名+images+图片名访问图片的话会提示404,这是因为服务器文件权限的问题,我们只需要在发布的iis中右键新建一个虚拟文件夹,然后把指向选择到根目录的images文件,然后右键虚拟文件-编辑权限-安全-编辑,新建一个角色赋予权限,即可根据域名+虚拟文件名+图片名的方式在网页打开服务器images文件夹下的图片