/// <summary>
/// 文件下载
/// </summary>
/// <param name="path">网站文件的相对路径</param>
/// <returns></returns>
public async Task<IActionResult> DownloadFile(string path)
{
path = Path.Combine(AppContext.BaseDirectory + path);
if (string.IsNullOrEmpty(path))
{
return NotFound();
}
var memoryStream = new MemoryStream();
using (var stream = new FileStream(path, FileMode.Open))
{
await stream.CopyToAsync(memoryStream);
}
memoryStream.Seek(0, SeekOrigin.Begin);
string[] strArry = path.Split('/');
string fileName = strArry[strArry.Length - 1];
//文件名必须编码,否则会有特殊字符(如中文)无法在此下载。
string encodeFilename = System.Net.WebUtility.UrlEncode(fileName);
Response.Headers.Add("Content-Disposition", "attachment; filename=" + encodeFilename);
return new FileStreamResult(memoryStream, "application/octet-stream");//文件流方式,指定文件流对应的ContenType。
}
[HttpPost]
public async Task<IActionResult> UploadImages(IFormFile file)
{
if (file == null) throw new ArgumentNullException(nameof(file));
var path = Path.Combine("UploadTemp", Path.GetRandomFileName());
if (!Directory.Exists(path)) Directory.CreateDirectory(path);
string filePath = Path.Combine(AppContext.BaseDirectory, path);
await using var ms = new MemoryStream();
await file.CopyToAsync(ms);
var md5 = new System.Security.Cryptography.MD5CryptoServiceProvider();
var hashcode = BitConverter.ToString(md5.ComputeHash(ms));
hashcode = hashcode.Replace("-", "");
var image = _userImageRepository.GetImageByHashCode(hashcode);
if (image == null)
{
await using (var fs = System.IO.File.Create(filePath))
{
await ms.CopyToAsync(fs);
}
return Ok(new
{
code = 0,
msg = "上传成功",
data = new
{
src = path
}
});
}
return Ok(new
{
code = 0,
msg = "上传成功",
data = new
{
src = image?.Uri
}
});
}
文件下载,图片上传
最新推荐文章于 2022-07-26 15:50:47 发布