From 32bb6d34e0934e2f0ff9d0bbb6f70b0bffca468e Mon Sep 17 00:00:00 2001 From: RakVhalate Date: Wed, 7 Dec 2022 19:55:18 +1000 Subject: [PATCH] Thumbnail feature. --- APIControllers/PictureUpload.cs | 37 ++++++++++++++++++++++++++++----- AuthInfo.cs | 2 +- DBControllers/MinIOchat.cs | 4 ++-- NeDvachAPI.csproj | 6 ++++++ 4 files changed, 41 insertions(+), 8 deletions(-) diff --git a/APIControllers/PictureUpload.cs b/APIControllers/PictureUpload.cs index 1a7eafd..db6e257 100644 --- a/APIControllers/PictureUpload.cs +++ b/APIControllers/PictureUpload.cs @@ -1,6 +1,6 @@ using Microsoft.AspNetCore.Mvc; using NeDvachAPI.DBControllers; - +using SkiaSharp; namespace NeDvachAPI.Controllers { @@ -13,19 +13,46 @@ namespace NeDvachAPI.Controllers [HttpPost(Name = "UploadPicture")] public async Task ReceivePost([FromForm] IFormFile PostPicture) { - var supportedTypes = new[] { "jpg", "png" }; + var supportedTypes = new[] { ".jpg", ".png", ".jpeg" }; string receivedFileName = PostPicture.FileName; - string fileExt = receivedFileName.Substring((receivedFileName.Length) - 3, 3); - if (supportedTypes.Contains(fileExt.ToLower())) //file type check + string fName = Path.GetFileNameWithoutExtension(receivedFileName); + string fExtention = Path.GetExtension(receivedFileName); + string previevFileName = fName + 's' + fExtention; + + Console.WriteLine("Расширение файла: " + fExtention); + + if (supportedTypes.Contains(fExtention.ToLower())) //file type check { ///Local Buffer File Part string filePath; + string previevPath; filePath = Directory.GetCurrentDirectory() + "\\Buffer\\" + receivedFileName; + previevPath = Directory.GetCurrentDirectory() + "\\Buffer\\" + previevFileName; Stream picBuffer = new FileStream(filePath, FileMode.Create, FileAccess.ReadWrite, FileShare.ReadWrite); PostPicture.CopyTo(picBuffer); picBuffer.Close(); + ///resize part + + bool resizeImage(string picPath, string smallPath, int width, int height) + { + var dstInfo = new SKImageInfo(height, width); + var bitmap = SKBitmap.Decode(picPath); + + var image = SKImage.FromBitmap(bitmap.Resize(dstInfo, SKFilterQuality.Medium)); + var data = image.Encode(SKEncodedImageFormat.Jpeg, 90); + + using (var stream = new FileStream(smallPath, FileMode.Create, FileAccess.Write)) + data.SaveTo(stream); + + data.Dispose(); + image.Dispose(); + bitmap.Dispose(); + return true; + } + resizeImage(filePath, previevPath, 300, 400); ///MinIo part - JsonResult picAdress = new(await MinIOchat.PictureUpload(filePath, receivedFileName)); + await MinIOchat.PictureUpload(previevPath, receivedFileName, "thread-pics-small"); + JsonResult picAdress = new(await MinIOchat.PictureUpload(filePath, receivedFileName, "thread-pics")); Console.WriteLine("Загружен файл:" + "http://static.vdk2ch.ru:15555/thread-pics/" + receivedFileName); return picAdress; } diff --git a/AuthInfo.cs b/AuthInfo.cs index 448a31d..c43298e 100644 --- a/AuthInfo.cs +++ b/AuthInfo.cs @@ -5,7 +5,7 @@ public class MinIo { public static string endpoint = "static.vdk2ch.ru:15555"; - public static string bucketName = "thread-pics"; + public static string bucketName = "thread-pics thread-pics-small"; public static string username = "admin"; public static string password = "password2ch"; } diff --git a/DBControllers/MinIOchat.cs b/DBControllers/MinIOchat.cs index b17b0a0..da3ae55 100644 --- a/DBControllers/MinIOchat.cs +++ b/DBControllers/MinIOchat.cs @@ -7,7 +7,7 @@ namespace NeDvachAPI.DBControllers { public class MinIOchat { - public static async Task PictureUpload(string fileroute, string filename) + public static async Task PictureUpload(string fileroute, string filename, string bucket) { MinioClient DvachIo = new MinioClient() .WithEndpoint(AuthInfo.MinIo.endpoint) @@ -20,7 +20,7 @@ namespace NeDvachAPI.DBControllers aesEncryption.GenerateKey(); var ssec = new SSEC(aesEncryption.Key); PutObjectArgs putObjectArgs = new PutObjectArgs() - .WithBucket(AuthInfo.MinIo.bucketName) + .WithBucket(bucket) .WithObject(filename) .WithFileName(fileroute) .WithContentType("image/png"); diff --git a/NeDvachAPI.csproj b/NeDvachAPI.csproj index 9e2d64c..685c8ef 100644 --- a/NeDvachAPI.csproj +++ b/NeDvachAPI.csproj @@ -10,7 +10,13 @@ + + + + + +