/// <summary>
        ///     上传文件到缓存中
        /// </summary>
        /// <param name="file"></param>
        /// <returns></returns>
        public async Task <FileUploadOutputDto> UploadTempFile(IFormFile file)
        {
            await Task.Yield();

            //Check input
            if (file == null)
            {
                throw new Exception("File empty");
            }

            if (file.Length > AppConsts.MaxFileSize)
            {
                throw new Exception("File cannot be larger than 50mb");
            }

            byte[] fileBytes;
            using (var stream = file.OpenReadStream())
            {
                fileBytes = stream.GetAllBytes();
            }

            var tenantId = AbpSession.TenantId;

            var storedFile = new DataFileObject(tenantId, fileBytes.ToArray());

            _tempFileCacheManager.SetFile(storedFile.Id.ToString(), fileBytes.ToArray());

            return(new FileUploadOutputDto
            {
                FileName = file.FileName,
                FileToken = storedFile.Id.ToString(),
                FileSize = file.Length
            });
        }
        /// <summary>
        ///     上传文件到数据库中
        /// </summary>
        /// <param name="file"></param>
        /// <returns></returns>
        public async Task <FileUploadOutputDto> UploadFileToData(IFormFile file)
        {
            //Check input
            if (file == null)
            {
                throw new Exception("File empty");
            }

            if (file.Length > AppConsts.MaxFileSize)
            {
                throw new Exception("File cannot be larger than 50mb");
            }

            byte[] fileBytes;
            using (var stream = file.OpenReadStream())
            {
                fileBytes = stream.GetAllBytes();
            }

            var tenantId   = AbpSession.TenantId;
            var fileObject = new DataFileObject(tenantId, fileBytes);

            await _dataFileObjectManager.SaveAsync(fileObject);

            return(new FileUploadOutputDto
            {
                FileName = file.FileName,
                FileToken = fileObject.Id.ToString(),
                FileSize = file.Length
            });
        }
Example #3
0
        public async Task <UploadProfilePictureOutputDto> UploadProfilePictureReturnFileId()
        {
            try
            {
                var profilePictureFile = Request.Form.Files.First();

                //Check input
                if (profilePictureFile == null)
                {
                    throw new UserFriendlyException(L("ProfilePicture_Change_Error"));
                }

                if (profilePictureFile.Length > MaxProfilePictureSize)
                {
                    throw new UserFriendlyException(L("ProfilePicture_Warn_SizeLimit", AppConsts.MaxProfilePictureBytesUserFriendlyValue));
                }

                byte[] fileBytes;
                using (var stream = profilePictureFile.OpenReadStream())
                {
                    fileBytes = stream.GetAllBytes();
                }

                if (!ImageFormatHelper.GetRawImageFormat(fileBytes).IsIn(ImageFormat.Jpeg, ImageFormat.Png, ImageFormat.Gif))
                {
                    throw new UserFriendlyException(L("ProfilePicture_Change_Info", AppConsts.MaxProfilePictureBytesUserFriendlyValue));
                }

                var storedFile = new DataFileObject(AbpSession.TenantId, fileBytes.ToArray());
                await _dataFileObjectManager.SaveAsync(storedFile);

                return(new UploadProfilePictureOutputDto
                {
                    FileName = profilePictureFile.FileName,
                    ProfilePictureId = storedFile.Id
                });
            }
            catch (UserFriendlyException ex)
            {
                return(new UploadProfilePictureOutputDto(new ErrorInfo(ex.Message)));
            }
        }
        public async Task UpdateProfilePictureAsync(UpdateProfilePictureInput input)
        {
            byte[] byteArray;

            var imageBytes = _dataTempFileCacheManager.GetFile(input.FileToken);

            if (imageBytes == null)
            {
                throw new UserFriendlyException("没有找到符合这个图片的token信息: " + input.FileToken);
            }

            using (var bmpImage = new Bitmap(new MemoryStream(imageBytes)))
            {
                var width  = (input.Width == 0 || input.Width > bmpImage.Width) ? bmpImage.Width : input.Width;
                var height = (input.Height == 0 || input.Height > bmpImage.Height) ? bmpImage.Height : input.Height;
                var bmCrop = bmpImage.Clone(new Rectangle(input.X, input.Y, width, height), bmpImage.PixelFormat);

                using (var stream = new MemoryStream())
                {
                    bmCrop.Save(stream, bmpImage.RawFormat);
                    byteArray = stream.ToArray();
                }
            }

            if (byteArray.Length > MaxProfilPictureBytes)
            {
                throw new UserFriendlyException(L("ResizedProfilePicture_Warn_SizeLimit", AppConsts.ResizedMaxProfilPictureBytesUserFriendlyValue));
            }

            var user = await UserManager.GetUserByIdAsync(AbpSession.GetUserId());

            if (user.ProfilePictureId.HasValue)
            {
                await _dataFileObjectManager.DeleteAsync(user.ProfilePictureId.Value);
            }

            var storedFile = new DataFileObject(AbpSession.TenantId, byteArray);
            await _dataFileObjectManager.SaveAsync(storedFile);

            user.ProfilePictureId = storedFile.Id;
        }
Example #5
0
        public async Task <JsonResult> ImportFromExcel()
        {
            try
            {
                var file = Request.Form.Files.First();

                if (file == null)
                {
                    throw new UserFriendlyException(L("File_Empty_Error"));
                }

                if (file.Length > 1048576 * 100) //100 MB
                {
                    throw new UserFriendlyException(L("File_SizeLimit_Error"));
                }

                byte[] fileBytes;
                using (var stream = file.OpenReadStream())
                {
                    fileBytes = stream.GetAllBytes();
                }

                var tenantId   = AbpSession.TenantId;
                var fileObject = new DataFileObject(tenantId, fileBytes);

                await _dataFileObjectManager.SaveAsync(fileObject);

                await BackgroundJobManager.EnqueueAsync <ImportUsersToExcelJob, ImportUsersFromExcelJobArgs>(new ImportUsersFromExcelJobArgs
                {
                    TenantId       = tenantId,
                    BinaryObjectId = fileObject.Id,
                    User           = AbpSession.ToUserIdentifier()
                });

                return(Json(new AjaxResponse(new { })));
            }
            catch (UserFriendlyException ex)
            {
                return(Json(new AjaxResponse(new ErrorInfo(ex.Message))));
            }
        }
        private async Task <User> RegisterExternalUserAsync(ExternalAuthUserInfo externalUser)
        {
            var user = await _userRegistrationManager.RegisterAsync(
                externalUser.Name,
                externalUser.EmailAddress,
                externalUser.EmailAddress,
                UserManagerment.Users.User.CreateRandomPassword(),
                true
                );

            if (Uri.TryCreate(externalUser.AvatarUrl, UriKind.Absolute, out var uri))
            {
                using (var httpClient = new HttpClient())
                {
                    var avatarBytes = await httpClient.GetByteArrayAsync(uri);

                    var storedFile = new DataFileObject(AbpSession.TenantId, avatarBytes);
                    await _dataFileObjectManager.SaveAsync(storedFile);

                    user.ProfilePictureId = storedFile.Id;
                }
            }
            user.Logins = new List <UserLogin>
            {
                new UserLogin
                {
                    LoginProvider = externalUser.Provider,
                    ProviderKey   = externalUser.ProviderKey,
                    TenantId      = user.TenantId
                }
            };

            await CurrentUnitOfWork.SaveChangesAsync();

            return(user);
        }
 public void SetFile(string token, DataFileObject content)
 {
     _cacheManager.GetCache(TempFileCacheName).Set(token, content, new TimeSpan(0, 0, 1, 0));//默认过期时间为1分钟
 }