Esempio n. 1
0
        public async Task <IActionResult> UploadAvatar([FromForm] IFormFile avatarFile)
        {
            if (avatarFile.Length > 1024 * 1024)
            {
                return(Json(new { status = false, msg = "ExceedSize" }));   //  _localizer["Oops...., the size of avatar should be less than 1M"]
            }
            var _UserId      = _userManager.GetUserAsync(User).GetAwaiter().GetResult().Id;
            var memoryStream = new MemoryStream();
            await avatarFile.CopyToAsync(memoryStream);

            var AvatarBytes    = MakeCircleImage(memoryStream);//   memoryStream.ToArray();   //
            var AvatarFilePath = X_DOVEValues.AvatarStoragePath(_hostingEnv) + _UserId;

            if (System.IO.File.Exists(AvatarFilePath))
            {
                var AvatarFileBytes = await System.IO.File.ReadAllBytesAsync(AvatarFilePath);

                var _X_doveUserInfo = await _context.X_DoveUserInfos.FirstOrDefaultAsync(p => p.UserId == _UserId);

                if (_X_doveUserInfo != null && AvatarBytes == AvatarFileBytes)
                {                                        //  _X_doveUserInfo.AvatarBuffer
                    return(Json(new { status = true })); //  , X_DOVE_XSRF_TOKEN
                }
            }
            await System.IO.File.WriteAllBytesAsync(X_DOVEValues.AvatarStoragePath(_hostingEnv) + _UserId, AvatarBytes);

            //  X_DOVE_XSRF_TOKEN = Guid.NewGuid().ToString();
            //  TempData["X_DOVE_XSRF_TOKEN"] = X_DOVE_XSRF_TOKEN;
            return(Json(new { status = true })); //  , X_DOVE_XSRF_TOKEN
        }
Esempio n. 2
0
        public async Task <IActionResult> GetAvatar(string UserId = "")
        {
            var CurrentUserId = _userManager.GetUserAsync(User)?.GetAwaiter().GetResult()?.Id;  //    User.FindFirstValue(ClaimTypes.NameIdentifier);

            UserId = string.IsNullOrWhiteSpace(UserId) ? CurrentUserId : UserId;
            var AvatarFilePath = X_DOVEValues.AvatarStoragePath(_webHostEnv) + UserId;

            if (System.IO.File.Exists(AvatarFilePath))
            {
                var AvatarBytes = await System.IO.File.ReadAllBytesAsync(AvatarFilePath);

                if (AvatarBytes != null || AvatarBytes.Length > 1)
                {
                    return(File(AvatarBytes, "image/jpg"));
                }
            }
            var DefauleAvatar = await System.IO.File.ReadAllBytesAsync(_webHostEnv.WebRootPath + @"/img/article_publish_ico.webp");

            return(File(DefauleAvatar, "image/webp"));
        }
Esempio n. 3
0
        public async Task <IActionResult> GetAvatar(string UserId = "")
        {
            var CurrentUserId = User.FindFirstValue(ClaimTypes.NameIdentifier);

            UserId = string.IsNullOrWhiteSpace(UserId) ? CurrentUserId : UserId;
            var AvatarFilePath = X_DOVEValues.AvatarStoragePath(_hostingEnv) + UserId;

            //  var _X_doveUserInfo=await _context.X_DoveUserInfos.Where(p => p.UserId == UserId).FirstOrDefaultAsync();
            if (System.IO.File.Exists(AvatarFilePath))
            {
                var AvatarBytes = await System.IO.File.ReadAllBytesAsync(AvatarFilePath);

                if (AvatarBytes != null || AvatarBytes.Length > 1)
                {
                    return(File(AvatarBytes, "image/jpg"));
                }
            }
            var DefauleAvatar = await System.IO.File.ReadAllBytesAsync(_hostingEnv.WebRootPath + @"/img/article_publish_ico.webp");

            return(File(DefauleAvatar, "image/webp"));
        }
Esempio n. 4
0
        public async Task <IActionResult> UploadAvatar([FromForm] IFormFile avatarFile)
        {
            if (avatarFile.Length > 1024 * 1024)
            {
                return(Json(new { status = false, msg = "ExceedSize" }));
            }

            var _allowedAvatarFileExtensions = new string[] { "image/jpg", "image/jpeg", "image/png" };
            var _isExtensionNeedChecking     = false;

            if (_isExtensionNeedChecking && (!_allowedAvatarFileExtensions.Contains(avatarFile.ContentType.ToLower())))
            {
                return(Json(new { status = false, msg = "RefuseExtension" }));
            }
            else if (!avatarFile.ContentType.StartsWith("image/"))
            {
                return(Json(new { status = false, msg = "RefuseExtension" }));
            }
            var _UserId      = _userManager.GetUserAsync(User).GetAwaiter().GetResult().Id;
            var memoryStream = new MemoryStream();
            await avatarFile.CopyToAsync(memoryStream);

            var AvatarBytes    = memoryStream.ToArray(); //  MakeCircleImage(memoryStream);//
            var AvatarFilePath = X_DOVEValues.AvatarStoragePath(_webHostEnv) + _UserId;

            if (System.IO.File.Exists(AvatarFilePath))
            {
                var AvatarFileBytes = await System.IO.File.ReadAllBytesAsync(AvatarFilePath);

                var _X_doveUserInfo = await _context.X_DoveUserInfos.FirstOrDefaultAsync(p => p.UserId == _UserId);

                if (_X_doveUserInfo != null && AvatarBytes == AvatarFileBytes)
                {
                    return(Json(new { status = true }));  //  , X_DOVE_XSRF_TOKEN
                }
            }
            await System.IO.File.WriteAllBytesAsync(X_DOVEValues.AvatarStoragePath(_webHostEnv) + _UserId, AvatarBytes);

            return(Json(new { status = true }));
        }
Esempio n. 5
0
        /*
         * [ActionName("GetSharedImages")]
         * public async Task<IActionResult> Index()
         * {
         *  var UserId_ = _userManager.GetUserAsync(User).GetAwaiter().GetResult().Id;
         *  var _Extensions = _mimeHelper.GetExtensions("image", _hostingEnv);
         *  var _LUserFiles = await _context.LUserFile.Where(p=>p.UserId==UserId_ && p.IsLegal).ToListAsync();
         *  _LUserFiles = _LUserFiles.Where(p => _Extensions.Contains(p.Name.Split('.').LastOrDefault())).ToList();
         *  return View("GetSharedImages", _LUserFiles);
         * }
         */

        #region
        // GET: LUserFiles
        #endregion
        public async Task <IActionResult> Index(Guid?InDirId)
        {
            #region REBARBATIVE INITIALIZATION
            if (!Directory.Exists(X_DOVEValues.AvatarStoragePath(_hostingEnv)))
            {
                Directory.CreateDirectory(X_DOVEValues.AvatarStoragePath(_hostingEnv));
            }

            var _FileNames = new DirectoryInfo(X_DOVEValues.FileStoragePath(_hostingEnv)).GetFiles().Select(p => p.Name);
            //  Console.WriteLine("FileName >> "+JsonConvert.SerializeObject(_FileNames));
            var _LFiles = await _context.LFile.ToListAsync();

            var _LUserFiles = await _context.LUserFile.ToListAsync();

            //  Console.WriteLine("File >> "+JsonConvert.SerializeObject(_LFiles));

            _LFiles.ForEach(f =>
            {
                if (!_FileNames.Contains(f.MD5))
                {
                    _context.LFile.Remove(f);
                }
            });

            _LUserFiles.ForEach(f =>
            {
                if (!_FileNames.Contains(f.MD5))
                {
                    _context.LUserFile.Remove(f);
                }
            });

            await _context.SaveChangesAsync();

            #endregion

            var _InDirName = "root";
            var _LastDirId = Guid.Empty;
            var _LDirs     = new List <LDir>();
            var _Path      = string.Empty;

            InDirId = InDirId ?? Guid.Empty;
            var UserId_ = _userManager.GetUserAsync(User).GetAwaiter().GetResult().Id;

            #region INITIAL_SIZE
            var _UserFiles_ = await _context.LUserFile.Where(p => p.UserId == UserId_).ToListAsync();

            var UsedSpace = await GetUsedSpaceAsync(_UserFiles_);   //  0.0;

            _UserFiles_ = _UserFiles_.Where(p => p.UserId == UserId_ && p.InDirId == InDirId && !string.IsNullOrWhiteSpace(p.MD5))
                          .OrderBy(p => p.DOCreate).ToList();
            _UserFiles_.ForEach(p =>
            {
                var _FileLength = new FileInfo(_xUserFileHelper.FileStoragePath(_hostingEnv) + p.MD5).Length;
                //  UsedSpace += _FileLength / (1024 * 1024);    //  MByte
                p.Size          = _FileLength;
                p.OptimizedSize = _xUserFileHelper.OptimizeSizeShow(_FileLength);
            });

            /*
             * _UserFiles_.ForEach(p=> {
             *  var _FileLength = new FileInfo(_xUserFileHelper.FileStoragePath(_hostingEnv) + p.MD5).Length;
             *  UsedSpace += _FileLength/(1024*1024);    //  MByte
             *  p.Size = _FileLength;
             * });
             */
            #endregion

            var LUserFileIds = _UserFiles_.Select(p => p.Id);

            #region PATH
            _InDirName = (await _context.LDir.Where(p => p.Id == InDirId).Select(p => p.Name).FirstOrDefaultAsync()) ?? _InDirName;
            _LastDirId = await _context.LDir.Where(p => p.Id == InDirId && p.UserId == UserId_).Select(p => p.InDirId).FirstOrDefaultAsync();

            _LDirs = await _context.LDir.Where(p => p.UserId == UserId_ && p.InDirId == InDirId && !LUserFileIds.Contains(p.Id))
                     .ToListAsync();

            _Path = _x_DOVEHelper.GetInPathOfFileOrDir(context: _context, InDirId: InDirId ?? Guid.Empty);

            //  (await _context.LDir.Where(p => p.Id == InDirId).Select(p => p.Name).FirstOrDefaultAsync()) ?? "root";
            // InDirId == Guid.Empty ? InDirId
            //    : await _context.LDir.Where(p => p.Id == InDirId && p.UserId == UserId_).Select(p => p.InDirId).FirstOrDefaultAsync();
            #endregion

            #region VIEWDATA

            ViewData[nameof(_Path)]        = _Path;
            ViewData[nameof(_LDirs)]       = _LDirs;
            ViewData[nameof(_LastDirId)]   = _LastDirId;
            ViewData[nameof(_InDirName)]   = _InDirName;
            ViewData[nameof(InDirId)]      = InDirId;
            ViewData["UsedSpace"]          = UsedSpace;
            ViewData["OptimizedUsedSpace"] = _xUserFileHelper.OptimizeSizeShow(UsedSpace);
            #endregion

            return(View(_UserFiles_));
        }