public async Task <bool> IsFileTypeAllowed(string fileType, SiteTypeEnum siteType) { using (var scope = Services.CreateScope()) { var optionAccessor = scope.ServiceProvider .GetRequiredService <IOptionAccessor>(); var optionmetaFileTypes = await optionAccessor.GetOptionValuesBySectionAsync(SectionEnum.AdminAttachmentFileTypes, siteType); var isFileTypeAllowed = optionmetaFileTypes .SingleOrDefault(x => x.KeyDescription == fileType)? .Value == ValueEnum.AttachmentFileType__Allowed; return(isFileTypeAllowed); } }
public async Task <List <OptionmetaResult> > GetOptionValuesBySectionAsync(SectionEnum section, SiteTypeEnum siteType) { var option = await _context.Options.SingleOrDefaultAsync(x => x.Section == section && x.Site.SiteType == siteType); var optionmetaResult = new List <OptionmetaResult>(); foreach (var optionmeta in option.Optionmetas) { optionmetaResult.Add(new OptionmetaResult { PublicKeyName = optionmeta.PublicKeyName, Key = optionmeta.Key, KeyDescription = optionmeta.KeyDescription, Value = optionmeta.Value, ValueDescription = optionmeta.ValueDescription, AdditionalInfo = optionmeta.AdditionalInfo }); } return(optionmetaResult); }
/// <summary> /// 获取站点地址 /// </summary> /// <param name="siteType"></param> /// <returns></returns> public string GetUrl(SiteTypeEnum type) { return getUrl(type.ToString()); }
public async Task <ActionResult <SiteDto> > Details(SiteTypeEnum siteType) { return(await Mediator.Send(new Details.Query { SiteType = siteType })); }
public async Task SaveTusFileInfoAsync(ITusFile file, SiteTypeEnum siteType, string refreshToken, UploadLocationEnum location, UploadLinkAccessibilityEnum linkAccessibility, CancellationToken cancellationToken) { var metadata = await file.GetMetadataAsync(cancellationToken); string name = metadata["name"].GetString(Encoding.UTF8); string type = metadata["type"].GetString(Encoding.UTF8); using (var scope = Services.CreateScope()) { var httpContextAccessor = scope.ServiceProvider .GetRequiredService <IHttpContextAccessor>(); var context = scope.ServiceProvider .GetRequiredService <DataContext>(); var logger = scope.ServiceProvider .GetRequiredService <IActivityLogger>(); var token = context.Tokens.SingleOrDefault(x => x.RefreshToken == refreshToken); var user = token.CreatedBy; var storePath = Path.Combine(UploadFolderName, user.UserName); var extension = Path.GetExtension(name); var fileName = file.Id; var filePublicName = name; var mimeType = type; var fileRelativePath = Path.Combine(storePath, fileName); long size = 0; string fileThumbnailPath = ""; var fileType = TusCheckFileType(type); if (location == UploadLocationEnum.LocalHost) { size = new FileInfo(Path.Combine(UploadFolderName, user.UserName, fileName)).Length; fileThumbnailPath = fileType == AttachmentTypeEnum.Photo ? await GenerateImageThumbnailAsync(file, extension, storePath, user.UserName, cancellationToken) : ""; } if (location == UploadLocationEnum.FtpServer) { // create an FTP client FtpClient client = new FtpClient(_baseUri, _port, _username, _password); // begin connecting to the server await client.ConnectAsync(); size = await client.GetFileSizeAsync($"{storePath}/{fileName}"); // await client.DisconnectAsync(); } var site = await context.Sites.SingleOrDefaultAsync(x => x.SiteType == siteType); user.CreatedAttachments.Add(new Attachment { SiteId = site.Id, UploadLocation = location, Type = fileType, RelativePath = fileRelativePath, ThumbnailPath = fileThumbnailPath, MimeType = mimeType, FileName = fileName, PublicFileName = filePublicName, FileExtension = extension, FileSize = size, LinkAccessibility = linkAccessibility }); var success = await context.SaveChangesAsync() > 0; if (success) { await logger.LogActivity( site.Id, ActivityCodeEnum.AttachmentAdd, ActivitySeverityEnum.Medium, ActivityObjectEnum.Attachemnt, $"The {fileType} file with the name {fileName} has been uploaded"); } else { throw new Exception("Problem saving file information in database!"); } } }