Use Byte[] instead of File for DTO
This commit is contained in:
@@ -67,17 +67,24 @@ export class NewItemComponent {
|
||||
}
|
||||
|
||||
onSubmit(){
|
||||
// Add uploaded files to dto
|
||||
|
||||
const formData = new FormData();
|
||||
|
||||
// Append non-file fields
|
||||
formData.append("Name", this.newItem.name);
|
||||
formData.append("Description", this.newItem.description);
|
||||
formData.append("Cost", this.newItem.cost.toString());
|
||||
formData.append("Url", this.newItem.url);
|
||||
|
||||
// Add image fileds
|
||||
if (this.selectedFiles.length > 0){
|
||||
for(let i=0; i<this.selectedFiles.length; i++){
|
||||
let building = new ProductImage();
|
||||
building.image = this.selectedFiles[i];
|
||||
this.newItem.images.push( building );
|
||||
formData.append("images", this.selectedFiles[i], this.selectedFiles[i].name);
|
||||
};
|
||||
}
|
||||
|
||||
// Proccess data
|
||||
this.http.post<boolean>( "https://mistox.com/api/product/create", this.newItem ).subscribe({
|
||||
this.http.post<boolean>( "https://mistox.com/api/product/create", formData ).subscribe({
|
||||
next: async (data) => {
|
||||
if (data == true){
|
||||
this.errorMsgs = ["Product Created Successfully"];
|
||||
|
||||
@@ -57,9 +57,21 @@ namespace MistoxWebsite.Server.Controllers {
|
||||
|
||||
[Route( "api/product/create" )]
|
||||
[HttpPost]
|
||||
public async Task<ActionResult<bool>> CreateProduct( [FromBody] Product obj ) {
|
||||
public async Task<ActionResult<bool>> CreateProduct([FromForm] Product obj, [FromForm] List<IFormFile> images){
|
||||
try {
|
||||
await _databaseService.NewProduct( obj );
|
||||
List<ProductImage> building = new List<ProductImage>();
|
||||
foreach (var file in images) {
|
||||
using (var stream = new MemoryStream()) {
|
||||
await file.CopyToAsync(stream);
|
||||
var bytes = stream.ToArray();
|
||||
|
||||
// Convert to your image model or whatever your logic is
|
||||
ProductImage img = new ProductImage { Image = bytes, Name = file.FileName };
|
||||
building.Add(img);
|
||||
}
|
||||
}
|
||||
obj.Images = building.ToArray();
|
||||
await _databaseService.NewProduct(obj);
|
||||
await UpdateStore();
|
||||
return true;
|
||||
} catch {
|
||||
|
||||
@@ -33,7 +33,8 @@ namespace MistoxWebsite.Server.Entities {
|
||||
public class ProductImage {
|
||||
public int ImageID { get; set; } // PK
|
||||
public int ProductID { get; set; }
|
||||
public FormFile? Image { get; set; } = null;
|
||||
public byte[] Image { get; set; } = Array.Empty<byte>();
|
||||
public string Name { get; set; } = "";
|
||||
}
|
||||
|
||||
public class Cart {
|
||||
|
||||
@@ -26,11 +26,13 @@ namespace MistoxWebsite.Server.Services.DatabaseService {
|
||||
int _ImageID = reader.GetInt32("ImageID");
|
||||
int _ProductID = reader.GetInt32("ProductID");
|
||||
byte[] _Image = (byte[])reader["Image"];
|
||||
string _Name = reader.GetString("Name");
|
||||
|
||||
items.Add(new ProductImage() {
|
||||
ImageID = _ImageID,
|
||||
ProductID = _ProductID,
|
||||
Image = BytesToFile(_Image)
|
||||
Image = _Image,
|
||||
Name = _Name
|
||||
});
|
||||
}
|
||||
}
|
||||
@@ -45,13 +47,14 @@ namespace MistoxWebsite.Server.Services.DatabaseService {
|
||||
if (cur.Image != null) {
|
||||
string command = @"
|
||||
INSERT INTO ProductImage
|
||||
(ProductID, Image)
|
||||
(ProductID, Image, Name)
|
||||
VALUES
|
||||
(@ProductID, @Image);
|
||||
(@ProductID, @Image, @Name);
|
||||
";
|
||||
MySqlCommand cmd = new MySqlCommand(command, connection);
|
||||
cmd.Parameters.AddWithValue("@ProductID", Item.ID);
|
||||
cmd.Parameters.AddWithValue("@Image", await FileToBytes( cur.Image ));
|
||||
cmd.Parameters.AddWithValue("@Image", cur.Image );
|
||||
cmd.Parameters.AddWithValue("@Name", cur.Name );
|
||||
await cmd.ExecuteNonQueryAsync();
|
||||
}
|
||||
}
|
||||
@@ -71,19 +74,5 @@ namespace MistoxWebsite.Server.Services.DatabaseService {
|
||||
await cmd.ExecuteNonQueryAsync();
|
||||
}
|
||||
}
|
||||
|
||||
public async Task<byte[]> FileToBytes(IFormFile file) {
|
||||
using (var memoryStream = new MemoryStream()) {
|
||||
await file.CopyToAsync(memoryStream);
|
||||
return memoryStream.ToArray();
|
||||
}
|
||||
}
|
||||
|
||||
public FormFile BytesToFile(byte[] fileBytes) {
|
||||
var stream = new MemoryStream(fileBytes);
|
||||
return new FormFile(stream, 0, fileBytes.Length, "file", Guid.NewGuid().ToString()) {
|
||||
Headers = new HeaderDictionary()
|
||||
};
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user