diff --git a/modules/cms-kit/host/Volo.CmsKit.Web.Unified/CmsKitWebUnifiedModule.cs b/modules/cms-kit/host/Volo.CmsKit.Web.Unified/CmsKitWebUnifiedModule.cs
index b9f562bf98..3f36f7343e 100644
--- a/modules/cms-kit/host/Volo.CmsKit.Web.Unified/CmsKitWebUnifiedModule.cs
+++ b/modules/cms-kit/host/Volo.CmsKit.Web.Unified/CmsKitWebUnifiedModule.cs
@@ -31,6 +31,7 @@ using Volo.Abp.PermissionManagement;
using Volo.Abp.PermissionManagement.EntityFrameworkCore;
using Volo.Abp.PermissionManagement.Identity;
using Volo.Abp.SettingManagement.EntityFrameworkCore;
+using Volo.Abp.Swashbuckle;
using Volo.Abp.TenantManagement;
using Volo.Abp.TenantManagement.EntityFrameworkCore;
using Volo.Abp.TenantManagement.Web;
@@ -65,7 +66,8 @@ namespace Volo.CmsKit
typeof(AbpTenantManagementEntityFrameworkCoreModule),
typeof(AbpAspNetCoreMvcUiBasicThemeModule),
typeof(AbpAspNetCoreSerilogModule),
- typeof(BlobStoringDatabaseEntityFrameworkCoreModule)
+ typeof(BlobStoringDatabaseEntityFrameworkCoreModule),
+ typeof(AbpSwashbuckleModule)
)]
public class CmsKitWebUnifiedModule : AbpModule
{
@@ -158,7 +160,7 @@ namespace Volo.CmsKit
app.UseAuthorization();
app.UseSwagger();
- app.UseSwaggerUI(options =>
+ app.UseAbpSwaggerUI(options =>
{
options.SwaggerEndpoint("/swagger/v1/swagger.json", "Support APP API");
});
diff --git a/modules/cms-kit/host/Volo.CmsKit.Web.Unified/Volo.CmsKit.Web.Unified.csproj b/modules/cms-kit/host/Volo.CmsKit.Web.Unified/Volo.CmsKit.Web.Unified.csproj
index 1dbafb4ad6..f13af43d96 100644
--- a/modules/cms-kit/host/Volo.CmsKit.Web.Unified/Volo.CmsKit.Web.Unified.csproj
+++ b/modules/cms-kit/host/Volo.CmsKit.Web.Unified/Volo.CmsKit.Web.Unified.csproj
@@ -16,6 +16,7 @@
+
diff --git a/modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/MediaDescriptors/UploadMediaStreamContent.cs b/modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/MediaDescriptors/CreateMediaInputDto.cs
similarity index 56%
rename from modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/MediaDescriptors/UploadMediaStreamContent.cs
rename to modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/MediaDescriptors/CreateMediaInputDto.cs
index b6dcb1323d..b61d50e124 100644
--- a/modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/MediaDescriptors/UploadMediaStreamContent.cs
+++ b/modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/MediaDescriptors/CreateMediaInputDto.cs
@@ -6,17 +6,13 @@ using Volo.CmsKit.MediaDescriptors;
namespace Volo.CmsKit.Admin.MediaDescriptors
{
- public class UploadMediaStreamContent : RemoteStreamContent
+ public class CreateMediaInputStream : RemoteStreamContent
{
[Required]
[DynamicStringLength(typeof(MediaDescriptorConsts), nameof(MediaDescriptorConsts.MaxNameLength))]
public string Name { get; set; }
- [Required]
- [DynamicStringLength(typeof(MediaDescriptorConsts), nameof(MediaDescriptorConsts.MaxMimeTypeLength))]
- public string MimeType { get; set; }
-
- public UploadMediaStreamContent(Stream stream) : base(stream)
+ public CreateMediaInputStream(Stream stream) : base(stream)
{
}
}
diff --git a/modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/MediaDescriptors/IMediaDescriptorAdminAppService.cs b/modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/MediaDescriptors/IMediaDescriptorAdminAppService.cs
index 2fb86ba7f5..e56cb6d630 100644
--- a/modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/MediaDescriptors/IMediaDescriptorAdminAppService.cs
+++ b/modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/MediaDescriptors/IMediaDescriptorAdminAppService.cs
@@ -5,15 +5,12 @@ using Volo.Abp.Content;
namespace Volo.CmsKit.Admin.MediaDescriptors
{
- public interface IMediaDescriptorAdminAppService
- : ICrudAppService<
- MediaDescriptorDto,
- MediaDescriptorGetListDto,
- Guid,
- MediaDescriptorGetListInput,
- UploadMediaStreamContent,
- UpdateMediaDescriptorDto>
+ public interface IMediaDescriptorAdminAppService : IApplicationService
{
+ Task CreateAsync(CreateMediaInputStream inputStream);
+
Task DownloadAsync(Guid id, GetMediaRequestDto request);
+
+ Task DeleteAsync(Guid id);
}
}
\ No newline at end of file
diff --git a/modules/cms-kit/src/Volo.CmsKit.Admin.Application/Volo/CmsKit/Admin/MediaDescriptors/MediaDescriptorAdminAppService.cs b/modules/cms-kit/src/Volo.CmsKit.Admin.Application/Volo/CmsKit/Admin/MediaDescriptors/MediaDescriptorAdminAppService.cs
index 84c8a9a993..d2f5865926 100644
--- a/modules/cms-kit/src/Volo.CmsKit.Admin.Application/Volo/CmsKit/Admin/MediaDescriptors/MediaDescriptorAdminAppService.cs
+++ b/modules/cms-kit/src/Volo.CmsKit.Admin.Application/Volo/CmsKit/Admin/MediaDescriptors/MediaDescriptorAdminAppService.cs
@@ -1,8 +1,6 @@
using System;
-using System.Collections.Generic;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Authorization;
-using Volo.Abp.Application.Dtos;
using Volo.Abp.BlobStoring;
using Volo.Abp.Content;
using Volo.CmsKit.MediaDescriptors;
@@ -21,45 +19,18 @@ namespace Volo.CmsKit.Admin.MediaDescriptors
MediaDescriptorRepository = mediaDescriptorRepository;
}
- public virtual async Task GetAsync(Guid id)
- {
- var entity = await MediaDescriptorRepository.GetAsync(id);
-
- return ObjectMapper.Map(entity);
- }
-
- public virtual async Task> GetListAsync(MediaDescriptorGetListInput input)
- {
- var totalCount = await MediaDescriptorRepository.GetCountAsync();
- var entites = await MediaDescriptorRepository.GetListAsync();
-
- var dtos = ObjectMapper.Map, List>(entites);
-
- return new PagedResultDto(totalCount, dtos);
- }
-
- public virtual async Task CreateAsync(UploadMediaStreamContent input)
+ public virtual async Task CreateAsync(CreateMediaInputStream inputStream)
{
var newId = GuidGenerator.Create();
- var newEntity = new MediaDescriptor(newId, CurrentTenant.Id, input.Name, input.MimeType, input.ContentLength ?? 0);
+ var stream = inputStream.GetStream();
+ var newEntity = new MediaDescriptor(newId, CurrentTenant.Id, inputStream.Name, inputStream.ContentType, stream.Length);
await MediaDescriptorRepository.InsertAsync(newEntity);
- await MediaContainer.SaveAsync(newId.ToString(), input.GetStream());
+ await MediaContainer.SaveAsync(newId.ToString(), stream);
return ObjectMapper.Map(newEntity);
}
- public virtual async Task UpdateAsync(Guid id, UpdateMediaDescriptorDto input)
- {
- var entity = await MediaDescriptorRepository.GetAsync(id);
-
- entity.SetName(input.Name);
-
- await MediaDescriptorRepository.UpdateAsync(entity);
-
- return ObjectMapper.Map(entity);
- }
-
public virtual async Task DeleteAsync(Guid id)
{
await MediaContainer.DeleteAsync(id.ToString());
diff --git a/modules/cms-kit/src/Volo.CmsKit.Admin.HttpApi/Volo/CmsKit/Admin/MediaDescriptors/MediaDescriptorAdminController.cs b/modules/cms-kit/src/Volo.CmsKit.Admin.HttpApi/Volo/CmsKit/Admin/MediaDescriptors/MediaDescriptorAdminController.cs
index ce4325978d..c310ffbe67 100644
--- a/modules/cms-kit/src/Volo.CmsKit.Admin.HttpApi/Volo/CmsKit/Admin/MediaDescriptors/MediaDescriptorAdminController.cs
+++ b/modules/cms-kit/src/Volo.CmsKit.Admin.HttpApi/Volo/CmsKit/Admin/MediaDescriptors/MediaDescriptorAdminController.cs
@@ -1,5 +1,6 @@
using System;
using System.Threading.Tasks;
+using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using Volo.Abp;
using Volo.Abp.Application.Dtos;
@@ -12,7 +13,7 @@ namespace Volo.CmsKit.Admin.MediaDescriptors
[RequiresGlobalFeature(typeof(MediasFeature))]
[RemoteService(Name = CmsKitCommonRemoteServiceConsts.RemoteServiceName)]
[Area("cms-kit")]
- [Route("api/cms-kit-admin/medias")]
+ [Route("api/cms-kit-admin/media")]
public class MediaDescriptorAdminController : CmsKitAdminController, IMediaDescriptorAdminAppService
{
protected readonly IMediaDescriptorAdminAppService MediaDescriptorAdminAppService;
@@ -22,43 +23,44 @@ namespace Volo.CmsKit.Admin.MediaDescriptors
MediaDescriptorAdminAppService = mediaDescriptorAdminAppService;
}
- [HttpGet]
- [Route("{id}")]
- public virtual Task GetAsync(Guid id)
- {
- return MediaDescriptorAdminAppService.GetAsync(id);
- }
-
- [HttpGet]
- public virtual Task> GetListAsync(MediaDescriptorGetListInput input)
- {
- return MediaDescriptorAdminAppService.GetListAsync(input);
- }
-
[HttpPost]
- public virtual Task CreateAsync(UploadMediaStreamContent input)
- {
- return MediaDescriptorAdminAppService.CreateAsync(input);
- }
-
- [HttpPut]
- [Route("{id}")]
- public virtual Task UpdateAsync(Guid id, UpdateMediaDescriptorDto input)
+ [NonAction]
+ public virtual Task CreateAsync(CreateMediaInputStream inputStream)
{
- return MediaDescriptorAdminAppService.UpdateAsync(id, input);
+ return MediaDescriptorAdminAppService.CreateAsync(inputStream);
}
[HttpDelete]
+ [Route("{id}")]
public virtual Task DeleteAsync(Guid id)
{
return MediaDescriptorAdminAppService.DeleteAsync(id);
}
[HttpGet]
- [Route("download/{id}")]
+ [Route("{id}")]
public virtual Task DownloadAsync(Guid id, GetMediaRequestDto request)
{
return MediaDescriptorAdminAppService.DownloadAsync(id, request);
}
+
+ [HttpPost]
+ public virtual async Task UploadAsync(IFormFile file)
+ {
+ if (file == null)
+ {
+ return BadRequest();
+ }
+
+ var inputStream = new CreateMediaInputStream(file.OpenReadStream())
+ {
+ ContentType = file.ContentType,
+ Name = file.FileName
+ };
+
+ var mediaDescriptorDto = await MediaDescriptorAdminAppService.CreateAsync(inputStream);
+
+ return StatusCode(201, mediaDescriptorDto);
+ }
}
}
\ No newline at end of file