From 9c6d6731d8b676b465369f28900c8cc7b8f72e19 Mon Sep 17 00:00:00 2001 From: limited_dev Date: Wed, 1 Feb 2023 14:18:36 +0100 Subject: [PATCH] feat: finished converting image uploads to on disk --- .gitignore | 1 + ImageBoardServerApp/App.razor | 2 +- ImageBoardServerApp/Data/ImageData.cs | 2 +- .../ImageBoardServerApp.csproj | 15 +++--- .../Shared/Components/Comment.razor | 2 +- .../Shared/Components/Forms/CommentForm.razor | 43 ++++++++---------- .../Shared/Components/Forms/FormInfo.razor | 2 +- .../Shared/Components/Forms/PostForm.razor | 25 ++-------- .../Shared/Components/Post.razor | 2 +- .../wwwroot/{static => img/static/err}/1.jpeg | Bin 10 files changed, 38 insertions(+), 56 deletions(-) rename ImageBoardServerApp/wwwroot/{static => img/static/err}/1.jpeg (100%) diff --git a/.gitignore b/.gitignore index 3d88ff4..e6a2ded 100644 --- a/.gitignore +++ b/.gitignore @@ -1,6 +1,7 @@ .idea/ ImageBoardServerApp/bin/ ImageBoardServerApp/obj/ +ImageBoardServerApp/wwwroot/img/dynamic *.db *.db-shm *.db-wal diff --git a/ImageBoardServerApp/App.razor b/ImageBoardServerApp/App.razor index 6e090be..a72e02f 100644 --- a/ImageBoardServerApp/App.razor +++ b/ImageBoardServerApp/App.razor @@ -8,7 +8,7 @@

404

- noimageFound + noimageFound

Sorry, nothing found. Please go back to the main page. Or watch the tree and find the hidden Cat..

diff --git a/ImageBoardServerApp/Data/ImageData.cs b/ImageBoardServerApp/Data/ImageData.cs index 590ae88..bdd3eba 100644 --- a/ImageBoardServerApp/Data/ImageData.cs +++ b/ImageBoardServerApp/Data/ImageData.cs @@ -15,7 +15,7 @@ public class ImageData public string Board { get; set; } [Required] - public Byte[] Image { get; set; } + public string ImageLocation { get; set; } public PostData Post { get; set; } diff --git a/ImageBoardServerApp/ImageBoardServerApp.csproj b/ImageBoardServerApp/ImageBoardServerApp.csproj index 8d9c9c3..7866871 100644 --- a/ImageBoardServerApp/ImageBoardServerApp.csproj +++ b/ImageBoardServerApp/ImageBoardServerApp.csproj @@ -18,15 +18,18 @@ - - - - - - + + + + + + + + + diff --git a/ImageBoardServerApp/Shared/Components/Comment.razor b/ImageBoardServerApp/Shared/Components/Comment.razor index 8b54619..ec71b35 100644 --- a/ImageBoardServerApp/Shared/Components/Comment.razor +++ b/ImageBoardServerApp/Shared/Components/Comment.razor @@ -16,7 +16,7 @@
@if (image != null) { - No Image found + No Image found }
diff --git a/ImageBoardServerApp/Shared/Components/Forms/CommentForm.razor b/ImageBoardServerApp/Shared/Components/Forms/CommentForm.razor index e912a95..1733a25 100644 --- a/ImageBoardServerApp/Shared/Components/Forms/CommentForm.razor +++ b/ImageBoardServerApp/Shared/Components/Forms/CommentForm.razor @@ -2,6 +2,7 @@ @using ImageBoardServerApp.Data.Repository @inject NavigationManager navigationManager +@inject IWebHostEnvironment env
[ @@ -13,19 +14,7 @@
Comment on @post.Title in /@post.Board/ - -
-
-
- @if (image != null) - { - No Image - } -
- -
-
OnChange(args, "username")) Class="w-100"/> @@ -39,9 +28,9 @@
- + +
-
} @@ -86,18 +75,14 @@ Console.WriteLine($"Smth changed!: {value}"); } + private IBrowserFile selectedFile; + private async Task SingleUpload(InputFileChangeEventArgs e) { - MemoryStream ms = new MemoryStream(); - await e.File.OpenReadStream().CopyToAsync(ms); - var bytes = ms.ToArray(); - image = bytes; - Console.WriteLine("File has been selected!"); - ms.Close(); + selectedFile = e.GetMultipleFiles()[0]; + this.StateHasChanged(); } - private Byte[] image = null; - private async Task onPostClick() { var userToCreate = new UserData @@ -122,14 +107,24 @@ await UsersRepository.updateUserAsync(foundusr); } - bool hasImage = image != null; + bool hasImage = selectedFile != null; + CommentData commentToCreate; if (hasImage) { + Stream stream = selectedFile.OpenReadStream(maxAllowedSize: 512000 * 4); // max 2MB + var file = Path.GetRandomFileName() + "." + selectedFile.Name.Split(".")[selectedFile.Name.Split(".").Length - 1]; + var path = $"{env.WebRootPath}\\img\\dynamic\\comment\\{@post.Board}\\{file}"; + FileStream fs = File.Create(path); + await stream.CopyToAsync(fs); + stream.Close(); + fs.Close(); + + var imageToUpload = new ImageData { Board = post.Board, - Image = image + ImageLocation = $"\\img\\dynamic\\comment\\{post.Board}\\{file}" }; int imageID = await ImagesRepository.createImageAsync(imageToUpload); commentToCreate = new CommentData() diff --git a/ImageBoardServerApp/Shared/Components/Forms/FormInfo.razor b/ImageBoardServerApp/Shared/Components/Forms/FormInfo.razor index 4696826..0db3688 100644 --- a/ImageBoardServerApp/Shared/Components/Forms/FormInfo.razor +++ b/ImageBoardServerApp/Shared/Components/Forms/FormInfo.razor @@ -1,5 +1,5 @@ 
    -
  • The max. image size is 1MB.
  • +
  • The max. image size is 2MiB.
  • Supported file types are: jpeg, png & gif
  • Read the rules before posting
\ No newline at end of file diff --git a/ImageBoardServerApp/Shared/Components/Forms/PostForm.razor b/ImageBoardServerApp/Shared/Components/Forms/PostForm.razor index 39cfc03..3e42dd2 100644 --- a/ImageBoardServerApp/Shared/Components/Forms/PostForm.razor +++ b/ImageBoardServerApp/Shared/Components/Forms/PostForm.razor @@ -21,16 +21,6 @@ Post to /@board.Tag/ - @board.Topic
-
-
- @if (image != null) - { - No Image - } -
- -
-
OnChange(args, "username")) Class="w-100"/> @@ -49,6 +39,7 @@
+
@@ -101,19 +92,10 @@ private async Task SingleUpload(InputFileChangeEventArgs e) { - /* - MemoryStream ms = new MemoryStream(); - await e.File.OpenReadStream().CopyToAsync(ms); - var bytes = ms.ToArray(); - image = bytes; - Console.WriteLine("File has been selected!"); - ms.Close(); */ selectedFile = e.GetMultipleFiles()[0]; this.StateHasChanged(); } - private Byte[] image; - private async Task onPostClick() { var userToCreate = new UserData @@ -146,7 +128,8 @@ } Stream stream = selectedFile.OpenReadStream(maxAllowedSize: 512000 * 4); // max 2MB - var path = $"{env.WebRootPath}\\dynamic\\op\\{selectedFile.Name}"; + var file = Path.GetRandomFileName() + "." + selectedFile.Name.Split(".")[selectedFile.Name.Split(".").Length - 1]; + var path = $"{env.WebRootPath}\\img\\dynamic\\op\\{board.Tag}\\{file}"; FileStream fs = File.Create(path); await stream.CopyToAsync(fs); stream.Close(); @@ -155,7 +138,7 @@ var imageToUpload = new ImageData { Board = board.Tag, - Image = image + ImageLocation = $"\\img\\dynamic\\op\\{board.Tag}\\{file}" }; int imageID = await ImagesRepository.createImageAsync(imageToUpload); var postToPost = new PostData diff --git a/ImageBoardServerApp/Shared/Components/Post.razor b/ImageBoardServerApp/Shared/Components/Post.razor index 767c087..c7dbf57 100644 --- a/ImageBoardServerApp/Shared/Components/Post.razor +++ b/ImageBoardServerApp/Shared/Components/Post.razor @@ -19,7 +19,7 @@
@if (@post.Image != null) { - No Image found + No Image found } else { diff --git a/ImageBoardServerApp/wwwroot/static/1.jpeg b/ImageBoardServerApp/wwwroot/img/static/err/1.jpeg similarity index 100% rename from ImageBoardServerApp/wwwroot/static/1.jpeg rename to ImageBoardServerApp/wwwroot/img/static/err/1.jpeg