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.Http;
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
using Microsoft.Extensions.DependencyInjection;
|
||||
|
||||
using Newtonsoft.Json.Linq;
|
||||
|
||||
@ -99,6 +100,7 @@ namespace ASC.Api.Documents
|
||||
private TenantManager TenantManager { get; }
|
||||
private FileUtility FileUtility { get; }
|
||||
private FileConverter FileConverter { get; }
|
||||
private IServiceProvider ServiceProvider { get; }
|
||||
|
||||
/// <summary>
|
||||
/// </summary>
|
||||
@ -128,7 +130,8 @@ namespace ASC.Api.Documents
|
||||
TenantManager tenantManager,
|
||||
FileUtility fileUtility,
|
||||
ConsumerFactory consumerFactory,
|
||||
FileConverter fileConverter)
|
||||
FileConverter fileConverter,
|
||||
IServiceProvider serviceProvider)
|
||||
{
|
||||
FilesControllerHelperString = filesControllerHelperString;
|
||||
FilesControllerHelperInt = filesControllerHelperInt;
|
||||
@ -154,6 +157,7 @@ namespace ASC.Api.Documents
|
||||
TenantManager = tenantManager;
|
||||
FileUtility = fileUtility;
|
||||
FileConverter = fileConverter;
|
||||
ServiceProvider = serviceProvider;
|
||||
}
|
||||
|
||||
[Read("info")]
|
||||
@ -1119,29 +1123,44 @@ namespace ASC.Api.Documents
|
||||
}
|
||||
|
||||
[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)]
|
||||
[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)]
|
||||
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)]
|
||||
[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>
|
||||
|
@ -30,6 +30,7 @@ using ASC.Web.Files.Utils;
|
||||
using ASC.Web.Studio.Core;
|
||||
|
||||
using Microsoft.AspNetCore.Http;
|
||||
using Microsoft.Extensions.DependencyInjection;
|
||||
using Microsoft.Extensions.Options;
|
||||
|
||||
using Newtonsoft.Json.Linq;
|
||||
@ -70,6 +71,7 @@ namespace ASC.Files.Helpers
|
||||
private ApiDateTimeHelper ApiDateTimeHelper { get; }
|
||||
private UserManager UserManager { get; }
|
||||
private DisplayUserSettingsHelper DisplayUserSettingsHelper { get; }
|
||||
public IServiceProvider ServiceProvider { get; }
|
||||
private ILog Logger { get; set; }
|
||||
|
||||
/// <summary>
|
||||
@ -101,7 +103,8 @@ namespace ASC.Files.Helpers
|
||||
FileConverter fileConverter,
|
||||
ApiDateTimeHelper apiDateTimeHelper,
|
||||
UserManager userManager,
|
||||
DisplayUserSettingsHelper displayUserSettingsHelper)
|
||||
DisplayUserSettingsHelper displayUserSettingsHelper,
|
||||
IServiceProvider serviceProvider)
|
||||
{
|
||||
ApiContext = context;
|
||||
FileStorageService = fileStorageService;
|
||||
@ -125,6 +128,7 @@ namespace ASC.Files.Helpers
|
||||
ApiDateTimeHelper = apiDateTimeHelper;
|
||||
UserManager = userManager;
|
||||
DisplayUserSettingsHelper = displayUserSettingsHelper;
|
||||
ServiceProvider = serviceProvider;
|
||||
HttpContextAccessor = httpContextAccessor;
|
||||
FileConverter = fileConverter;
|
||||
Logger = optionMonitor.Get("ASC.Files");
|
||||
@ -371,21 +375,23 @@ namespace ASC.Files.Helpers
|
||||
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 ext = FileUtility.GetFileExtension(file.Title);
|
||||
var destExt = FileUtility.GetFileExtension(destTitle);
|
||||
|
||||
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);
|
||||
}
|
||||
|
||||
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