本文将简单介绍如何制作 Web API 接收前端上传图片,并调整图片档名及尺寸,用於用户大头贴图片。
[HttpPost]
public async Task<IHttpActionResult> UploadProfile()
{
// 检查请求是否包含 multipart/form-data.
if (!Request.Content.IsMimeMultipartContent()) {
throw new HttpResponseException(HttpStatusCode.UnsupportedMediaType);
}
// 检查资料夹是否存在,若无则建立
string root = HttpContext.Current.Server.MapPath("~/upload/profile");
if (!Directory.Exists(root)) {
Directory.CreateDirectory("~/upload/profile");
}
try {
// 读取 MIME 资料
var provider = new MultipartMemoryStreamProvider();
await Request.Content.ReadAsMultipartAsync(provider);
// 取得档案副档名,单档用.FirstOrDefault()直接取出,多档需用回圈
string fileNameData = provider.Contents.FirstOrDefault().Headers.ContentDisposition.FileName.Trim('\"');
string fileType = fileNameData.Remove(0, fileNameData.LastIndexOf('.')); // .jpg
// 定义档案名称
string fileName = "UserName" + "Profile" + DateTime.Now.ToString("yyyyMMddHHmmss") + fileType;
// 储存图片,单档用.FirstOrDefault()直接取出,多档需用回圈
var fileBytes = await provider.Contents.FirstOrDefault().ReadAsByteArrayAsync();
var outputPath = Path.Combine(root, fileName);
using (var output = new FileStream(outputPath, FileMode.Create, FileAccess.Write)) {
await output.WriteAsync(fileBytes, 0, fileBytes.Length);
}
// 使用 SixLabors.ImageSharp 调整图片尺寸 (正方形大头贴)
var image = SixLabors.ImageSharp.Image.Load<Rgba32>(outputPath);
image.Mutate(x => x.Resize(120, 120)); // 输入(120, 0)会保持比例出现黑边
image.Save(outputPath);
return Ok(new
{
Status = true,
Data = new
{
FileName = fileName
}
});
}
catch (Exception e) {
return BadRequest(e.Message); // 400
}
}
官方网站的文件 https://wixtoolset.org//documentation/man...
上次试了一般转圈圈的progressbar,这次换进度条的progressbarr 首先是xml &...
如果要图像不失细节(jpeg是有损压缩) 最好是PNG格式(无损压缩) 这边介绍YUV import...
看到这个标题,你或许会有一点疑惑,为什麽他不是以 Flask 开头?因为它是一个资料库的名称,而 F...
Colab连结 昨天我们介绍了 Shuffle 这支 API 的使用方式,其中特别提到了如果今天资料...