Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Threading.Tasks;
- using Microsoft.AspNetCore.Mvc;
- using baka.Models.Entity;
- using baka.Models;
- using Microsoft.EntityFrameworkCore;
- using System.Net.Http;
- using Microsoft.AspNetCore.Http;
- using System.ComponentModel.DataAnnotations;
- using System.Net.Http.Headers;
- using System.IO;
- using System.Text;
- namespace baka.Controllers.API
- {
- [Route("api/upload")]
- public class UploadController : Controller
- {
- private BakaContext context = new BakaContext();
- [HttpPost]
- [Route("")]
- public async Task<IActionResult> UploadFileAsync([FileExtensions(Extensions = "jpg,jpeg,gif,png,bmp")]IFormFile file, [FromHeader] string HeaderKey, [FromQuery] string QueryKey)
- {
- string key = string.IsNullOrWhiteSpace(HeaderKey) ? QueryKey : HeaderKey;
- var usr = await context.Users.FirstOrDefaultAsync(x => x.ApiKey == key);
- if (usr == null) return Unauthorized();
- if (file.Length < 1) return NoContent();
- var fileName = ContentDispositionHeaderValue.Parse(file.ContentDisposition).FileName.Trim('"');
- var extarray = fileName.Split('.');
- var ext = extarray[extarray.Length - 1];
- string data = null;
- if(!Directory.Exists("tempimage/upload")) Directory.CreateDirectory("tempimage/upload");
- string path = $"tempimage/upload/{new Random().Next(10000)}";
- using (var fileStream = new FileStream(path, FileMode.Create))
- {
- await file.CopyToAsync(fileStream);
- }
- byte[] rawdata = System.IO.File.ReadAllBytes(path);
- data = Convert.ToBase64String(rawdata);
- if (data == null) return NoContent();
- BakaImage img = new BakaImage()
- {
- FileExtention = ext,
- User = usr,
- ByteFileData = data
- };
- context.Images.Add(img);
- await context.SaveChangesAsync();
- BakaImage createdImage = await context.Images.FirstOrDefaultAsync(x => x.ImagePost == img.ImagePost && x.User == img.User);
- usr.ApiKey = "Unauthorized!";
- usr.Images = new List<BakaImage>();
- string edata = "This endpoint does not display this data.";
- usr.Images.Add(new BakaImage() { ByteFileData = edata, Id = 0, ImagePost = edata, Timestamp = DateTime.Now });
- BakaImageInfo info = new BakaImageInfo()
- {
- DataId = createdImage.Id,
- Id = createdImage.ImagePost,
- User = usr
- };
- await Task.Run(() => System.IO.File.Delete(path));
- return Ok(info);
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement