WhiteLabel: fixed support img types

This commit is contained in:
pavelbannov 2022-11-23 12:59:47 +03:00
parent 802316c5f9
commit 60ee6a9d49
5 changed files with 34 additions and 14 deletions

View File

@ -76,7 +76,7 @@ public class PhotoController : PeopleControllerBase
if (!string.IsNullOrEmpty(inDto.TmpFile))
{
var fileName = Path.GetFileName(inDto.TmpFile);
var data = _userPhotoManager.GetTempPhotoData(fileName);
var data = await _userPhotoManager.GetTempPhotoData(fileName);
var settings = new UserPhotoThumbnailSettings(inDto.X, inDto.Y, inDto.Width, inDto.Height);

View File

@ -33,7 +33,8 @@ public class LogoUploader
}
public async Task Invoke(HttpContext context,
public async Task Invoke
(HttpContext context,
PermissionContext permissionContext,
SetupInfo setupInfo,
UserPhotoManager userPhotoManager)
@ -56,14 +57,15 @@ public class LogoUploader
{
throw new Exception(Resource.ErrorFileNotImage);
}
var data = new byte[logo.Length];
var reader = new BinaryReader(logo.OpenReadStream());
reader.Read(data, 0, (int)logo.Length);
reader.Close();
if (logo.ContentType.Contains("svg")) {
if (logo.ContentType.Contains("svg"))
{
result.Success = true;
result.Message = userPhotoManager.SaveTempSvg(data, setupInfo.MaxImageUploadSize);
}

View File

@ -64,7 +64,7 @@ public class StorageHelper
var fileName = Path.GetFileName(tmpLogoPath);
data = _userPhotoManager.GetTempPhotoData(fileName);
data = await _userPhotoManager.GetTempPhotoData(fileName);
await _userPhotoManager.RemoveTempPhoto(fileName);

View File

@ -782,21 +782,23 @@ public class UserPhotoManager
return store.SaveAsync(_tempDomainName, fileName, stream).Result.ToString();
}
public byte[] GetTempPhotoData(string fileName)
public async Task<byte[]> GetTempPhotoData(string fileName)
{
using var s = GetDataStore().GetReadStreamAsync(_tempDomainName, fileName).Result;
using var s = await GetDataStore().GetReadStreamAsync(_tempDomainName, fileName);
var data = new MemoryStream();
var buffer = new byte[1024 * 10];
while (true)
{
var count = s.Read(buffer, 0, buffer.Length);
var count = await s.ReadAsync(buffer, 0, buffer.Length);
if (count == 0)
{
break;
}
data.Write(buffer, 0, count);
await data.WriteAsync(buffer, 0, count);
}
return data.ToArray();
}

View File

@ -462,17 +462,33 @@ public class TenantWhiteLabelSettingsHelper
private async Task<(byte[], string)> GetLogoData(string logo)
{
var xStart = @"data:image/png;base64,";
var supportedFormats = new[]
{
new {
mime = "image/jpeg",
ext = "jpg"
},
new {
mime = "image/png",
ext = "png"
},
new {
mime = "image/svg+xml",
ext = "svg"
}
};
string ext = null;
if (!string.IsNullOrEmpty(logo))
{
byte[] data;
if (!logo.StartsWith(xStart))
var format = supportedFormats.FirstOrDefault(r => logo.StartsWith($"data:{r.mime};base64,"));
if (format == null)
{
var fileName = Path.GetFileName(logo);
ext = fileName.Split('.').Last();
data = _userPhotoManager.GetTempPhotoData(fileName);
data = await _userPhotoManager.GetTempPhotoData(fileName);
try
{
await _userPhotoManager.RemoveTempPhoto(fileName);
@ -484,8 +500,8 @@ public class TenantWhiteLabelSettingsHelper
}
else
{
ext = "png";
var xB64 = logo.Substring(xStart.Length); // Get the Base64 string
ext = format.ext;
var xB64 = logo.Substring($"data:{format.mime};base64,".Length); // Get the Base64 string
data = Convert.FromBase64String(xB64); // Convert the Base64 string to binary data
}