Advertisement
ejectedmatrix

Untitled

Aug 5th, 2017
145
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 2.80 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Threading.Tasks;
  5. using Microsoft.AspNetCore.Mvc;
  6. using baka.Models.Entity;
  7. using baka.Models;
  8. using Microsoft.EntityFrameworkCore;
  9. using System.Net.Http;
  10. using Microsoft.AspNetCore.Http;
  11. using System.ComponentModel.DataAnnotations;
  12. using System.Net.Http.Headers;
  13. using System.IO;
  14. using System.Text;
  15.  
  16. namespace baka.Controllers.API
  17. {
  18.     [Route("api/upload")]
  19.     public class UploadController : Controller
  20.     {
  21.         private BakaContext context = new BakaContext();
  22.  
  23.         [HttpPost]
  24.         [Route("")]
  25.         public async Task<IActionResult> UploadFileAsync([FileExtensions(Extensions = "jpg,jpeg,gif,png,bmp")]IFormFile file, [FromHeader] string HeaderKey, [FromQuery] string QueryKey)
  26.         {
  27.             string key = string.IsNullOrWhiteSpace(HeaderKey) ? QueryKey : HeaderKey;
  28.             var usr = await context.Users.FirstOrDefaultAsync(x => x.ApiKey == key);
  29.             if (usr == null) return Unauthorized();
  30.             if (file.Length < 1) return NoContent();
  31.             var fileName = ContentDispositionHeaderValue.Parse(file.ContentDisposition).FileName.Trim('"');
  32.             var extarray = fileName.Split('.');
  33.             var ext = extarray[extarray.Length - 1];
  34.             string data = null;
  35.             if(!Directory.Exists("tempimage/upload")) Directory.CreateDirectory("tempimage/upload");
  36.             string path = $"tempimage/upload/{new Random().Next(10000)}";
  37.             using (var fileStream = new FileStream(path, FileMode.Create))
  38.             {
  39.                 await file.CopyToAsync(fileStream);
  40.             }
  41.             byte[] rawdata = System.IO.File.ReadAllBytes(path);
  42.             data = Convert.ToBase64String(rawdata);
  43.             if (data == null) return NoContent();
  44.             BakaImage img = new BakaImage()
  45.             {
  46.                 FileExtention = ext,
  47.                 User = usr,
  48.                 ByteFileData = data
  49.             };
  50.  
  51.             context.Images.Add(img);
  52.             await context.SaveChangesAsync();
  53.            
  54.             BakaImage createdImage = await context.Images.FirstOrDefaultAsync(x => x.ImagePost == img.ImagePost && x.User == img.User);
  55.             usr.ApiKey = "Unauthorized!";
  56.             usr.Images = new List<BakaImage>();
  57.             string edata = "This endpoint does not display this data.";
  58.             usr.Images.Add(new BakaImage() { ByteFileData = edata, Id = 0, ImagePost = edata, Timestamp = DateTime.Now });
  59.             BakaImageInfo info = new BakaImageInfo()
  60.             {
  61.                 DataId = createdImage.Id,
  62.                 Id = createdImage.ImagePost,
  63.                 User = usr
  64.             };
  65.             await Task.Run(() => System.IO.File.Delete(path));
  66.             return Ok(info);
  67.         }
  68.     }
  69. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement