WhiteLabel: fixed support img types
This commit is contained in:
parent
802316c5f9
commit
60ee6a9d49
@ -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);
|
||||
|
||||
|
@ -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);
|
||||
}
|
||||
|
@ -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);
|
||||
|
||||
|
@ -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();
|
||||
}
|
||||
|
||||
|
@ -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
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user