fix bug
This commit is contained in:
parent
58aec95942
commit
101bd05ec7
@ -61,6 +61,7 @@ using ASC.Web.Studio.Utility;
|
|||||||
using Microsoft.AspNetCore.Authorization;
|
using Microsoft.AspNetCore.Authorization;
|
||||||
using Microsoft.AspNetCore.Http;
|
using Microsoft.AspNetCore.Http;
|
||||||
using Microsoft.AspNetCore.Mvc;
|
using Microsoft.AspNetCore.Mvc;
|
||||||
|
using Microsoft.Extensions.DependencyInjection;
|
||||||
|
|
||||||
using Newtonsoft.Json.Linq;
|
using Newtonsoft.Json.Linq;
|
||||||
|
|
||||||
@ -99,6 +100,7 @@ namespace ASC.Api.Documents
|
|||||||
private TenantManager TenantManager { get; }
|
private TenantManager TenantManager { get; }
|
||||||
private FileUtility FileUtility { get; }
|
private FileUtility FileUtility { get; }
|
||||||
private FileConverter FileConverter { get; }
|
private FileConverter FileConverter { get; }
|
||||||
|
private IServiceProvider ServiceProvider { get; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@ -128,7 +130,8 @@ namespace ASC.Api.Documents
|
|||||||
TenantManager tenantManager,
|
TenantManager tenantManager,
|
||||||
FileUtility fileUtility,
|
FileUtility fileUtility,
|
||||||
ConsumerFactory consumerFactory,
|
ConsumerFactory consumerFactory,
|
||||||
FileConverter fileConverter)
|
FileConverter fileConverter,
|
||||||
|
IServiceProvider serviceProvider)
|
||||||
{
|
{
|
||||||
FilesControllerHelperString = filesControllerHelperString;
|
FilesControllerHelperString = filesControllerHelperString;
|
||||||
FilesControllerHelperInt = filesControllerHelperInt;
|
FilesControllerHelperInt = filesControllerHelperInt;
|
||||||
@ -154,6 +157,7 @@ namespace ASC.Api.Documents
|
|||||||
TenantManager = tenantManager;
|
TenantManager = tenantManager;
|
||||||
FileUtility = fileUtility;
|
FileUtility = fileUtility;
|
||||||
FileConverter = fileConverter;
|
FileConverter = fileConverter;
|
||||||
|
ServiceProvider = serviceProvider;
|
||||||
}
|
}
|
||||||
|
|
||||||
[Read("info")]
|
[Read("info")]
|
||||||
@ -1119,29 +1123,44 @@ namespace ASC.Api.Documents
|
|||||||
}
|
}
|
||||||
|
|
||||||
[Create("file/{fileId:int}/copyas", order: int.MaxValue - 1)]
|
[Create("file/{fileId:int}/copyas", order: int.MaxValue - 1)]
|
||||||
public FileWrapper<int> CopyFileAsFromBody(int fileId, [FromBody] CopyAsModel<int> model)
|
public object CopyFileAsFromBody(int fileId, [FromBody] CopyAsModel<JsonElement> model)
|
||||||
{
|
{
|
||||||
return FilesControllerHelperInt.CopyFileAs(fileId, model.DestFolderId, model.DestTitle, model.Password);
|
return CopyFile(fileId, model);
|
||||||
}
|
}
|
||||||
|
|
||||||
[Create("file/{fileId:int}/copyas", order: int.MaxValue - 1)]
|
[Create("file/{fileId:int}/copyas", order: int.MaxValue - 1)]
|
||||||
[Consumes("application/x-www-form-urlencoded")]
|
[Consumes("application/x-www-form-urlencoded")]
|
||||||
public FileWrapper<int> CopyFileAsFromForm(int fileId, [FromForm] CopyAsModel<int> model)
|
public object CopyFileAsFromForm(int fileId, [FromForm] CopyAsModel<JsonElement> model)
|
||||||
{
|
{
|
||||||
return FilesControllerHelperInt.CopyFileAs(fileId, model.DestFolderId, model.DestTitle, model.Password);
|
return CopyFile(fileId, model);
|
||||||
}
|
}
|
||||||
|
|
||||||
[Create("file/{fileId}/copyas", order: int.MaxValue)]
|
[Create("file/{fileId}/copyas", order: int.MaxValue)]
|
||||||
public FileWrapper<string> CopyFileAsFromBody(string fileId, [FromBody] CopyAsModel<string> model)
|
public object CopyFileAsFromBody(string fileId, [FromBody] CopyAsModel<JsonElement> model)
|
||||||
{
|
{
|
||||||
return FilesControllerHelperString.CopyFileAs(fileId, model.DestFolderId, model.DestTitle, model.Password);
|
return CopyFile(fileId, model);
|
||||||
}
|
}
|
||||||
|
|
||||||
[Create("file/{fileId}/copyas", order: int.MaxValue)]
|
[Create("file/{fileId}/copyas", order: int.MaxValue)]
|
||||||
[Consumes("application/x-www-form-urlencoded")]
|
[Consumes("application/x-www-form-urlencoded")]
|
||||||
public FileWrapper<string> CopyFileAsFromForm(string fileId, [FromBody] CopyAsModel<string> model)
|
public object CopyFileAsFromForm(string fileId, [FromForm] CopyAsModel<JsonElement> model)
|
||||||
{
|
{
|
||||||
return FilesControllerHelperString.CopyFileAs(fileId, model.DestFolderId, model.DestTitle, model.Password);
|
return CopyFile(fileId, model);
|
||||||
|
}
|
||||||
|
|
||||||
|
private object CopyFile<T>(T fileId, CopyAsModel<JsonElement> model)
|
||||||
|
{
|
||||||
|
var helper = ServiceProvider.GetService<FilesControllerHelper<T>>();
|
||||||
|
if (model.DestFolderId.ValueKind == JsonValueKind.Number)
|
||||||
|
{
|
||||||
|
return helper.CopyFileAs(fileId, model.DestFolderId.GetInt32(), model.DestTitle, model.Password);
|
||||||
|
}
|
||||||
|
else if (model.DestFolderId.ValueKind == JsonValueKind.String)
|
||||||
|
{
|
||||||
|
return helper.CopyFileAs(fileId, model.DestFolderId.GetString(), model.DestTitle, model.Password);
|
||||||
|
}
|
||||||
|
|
||||||
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
@ -30,6 +30,7 @@ using ASC.Web.Files.Utils;
|
|||||||
using ASC.Web.Studio.Core;
|
using ASC.Web.Studio.Core;
|
||||||
|
|
||||||
using Microsoft.AspNetCore.Http;
|
using Microsoft.AspNetCore.Http;
|
||||||
|
using Microsoft.Extensions.DependencyInjection;
|
||||||
using Microsoft.Extensions.Options;
|
using Microsoft.Extensions.Options;
|
||||||
|
|
||||||
using Newtonsoft.Json.Linq;
|
using Newtonsoft.Json.Linq;
|
||||||
@ -70,6 +71,7 @@ namespace ASC.Files.Helpers
|
|||||||
private ApiDateTimeHelper ApiDateTimeHelper { get; }
|
private ApiDateTimeHelper ApiDateTimeHelper { get; }
|
||||||
private UserManager UserManager { get; }
|
private UserManager UserManager { get; }
|
||||||
private DisplayUserSettingsHelper DisplayUserSettingsHelper { get; }
|
private DisplayUserSettingsHelper DisplayUserSettingsHelper { get; }
|
||||||
|
public IServiceProvider ServiceProvider { get; }
|
||||||
private ILog Logger { get; set; }
|
private ILog Logger { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@ -101,7 +103,8 @@ namespace ASC.Files.Helpers
|
|||||||
FileConverter fileConverter,
|
FileConverter fileConverter,
|
||||||
ApiDateTimeHelper apiDateTimeHelper,
|
ApiDateTimeHelper apiDateTimeHelper,
|
||||||
UserManager userManager,
|
UserManager userManager,
|
||||||
DisplayUserSettingsHelper displayUserSettingsHelper)
|
DisplayUserSettingsHelper displayUserSettingsHelper,
|
||||||
|
IServiceProvider serviceProvider)
|
||||||
{
|
{
|
||||||
ApiContext = context;
|
ApiContext = context;
|
||||||
FileStorageService = fileStorageService;
|
FileStorageService = fileStorageService;
|
||||||
@ -125,6 +128,7 @@ namespace ASC.Files.Helpers
|
|||||||
ApiDateTimeHelper = apiDateTimeHelper;
|
ApiDateTimeHelper = apiDateTimeHelper;
|
||||||
UserManager = userManager;
|
UserManager = userManager;
|
||||||
DisplayUserSettingsHelper = displayUserSettingsHelper;
|
DisplayUserSettingsHelper = displayUserSettingsHelper;
|
||||||
|
ServiceProvider = serviceProvider;
|
||||||
HttpContextAccessor = httpContextAccessor;
|
HttpContextAccessor = httpContextAccessor;
|
||||||
FileConverter = fileConverter;
|
FileConverter = fileConverter;
|
||||||
Logger = optionMonitor.Get("ASC.Files");
|
Logger = optionMonitor.Get("ASC.Files");
|
||||||
@ -371,21 +375,23 @@ namespace ASC.Files.Helpers
|
|||||||
return FileWrapperHelper.Get(file);
|
return FileWrapperHelper.Get(file);
|
||||||
}
|
}
|
||||||
|
|
||||||
public FileWrapper<T> CopyFileAs(T fileId, T destFolderId, string destTitle, string password = null)
|
public FileWrapper<TTemplate> CopyFileAs<TTemplate>(T fileId, TTemplate destFolderId, string destTitle, string password = null)
|
||||||
{
|
{
|
||||||
|
var service = ServiceProvider.GetService<FileStorageService<TTemplate>>();
|
||||||
|
var controller = ServiceProvider.GetService<FilesControllerHelper<TTemplate>>();
|
||||||
var file = FileStorageService.GetFile(fileId, -1);
|
var file = FileStorageService.GetFile(fileId, -1);
|
||||||
var ext = FileUtility.GetFileExtension(file.Title);
|
var ext = FileUtility.GetFileExtension(file.Title);
|
||||||
var destExt = FileUtility.GetFileExtension(destTitle);
|
var destExt = FileUtility.GetFileExtension(destTitle);
|
||||||
|
|
||||||
if (ext == destExt)
|
if (ext == destExt)
|
||||||
{
|
{
|
||||||
var newFile = FileStorageService.CreateNewFile(new FileModel<T, T> { ParentId = destFolderId, Title = destTitle, TemplateId = fileId }, false);
|
var newFile = service.CreateNewFile(new FileModel<TTemplate, T> { ParentId = destFolderId, Title = destTitle, TemplateId = fileId }, false);
|
||||||
return FileWrapperHelper.Get(newFile);
|
return FileWrapperHelper.Get(newFile);
|
||||||
}
|
}
|
||||||
|
|
||||||
using (var fileStream = FileConverter.Exec(file, destExt, password))
|
using (var fileStream = FileConverter.Exec(file, destExt, password))
|
||||||
{
|
{
|
||||||
return InsertFile(destFolderId, fileStream, destTitle, true);
|
return controller.InsertFile(destFolderId, fileStream, destTitle, true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user