Гость
Как принять путь к файлу в заголовке и формат изображения HEIC в теле?
Сообщение
Гость » 15 мар 2024, 09:09
Я использую приложение функций Azure для привязки моей базы данных к интерфейсу. Теперь есть параметр для логотипа, который представляет собой файл больших двоичных объектов, это должен быть путь к файлу и он должен исходить из заголовка. Но если он имеет формат HEIC, он должен исходят из тела. Вот мой код, пожалуйста, кто-нибудь, скажите мне, как изменить его в соответствии с этим.
public HttpResponseData AddOrUpdate([HttpTrigger(AuthorizationLevel.Anonymous, "post")] HttpRequestData req, FunctionContext ExecutionContext)
{
var ответ = ResponseDataService.GetDefaultResponseData(req );
Код: Выделить всё
try
{
var parsedFormBody = MultipartFormDataParser.ParseAsync(req.Body);
string filePath = string.Empty;
foreach (var item in parsedFormBody.Result.Files)
{
Stream requestBody = item.Data;
string fileExtension = Path.GetExtension(item.FileName);
if (Constants.ImageFileFormats.Contains(fileExtension))
{
if (requestBody != null & requestBody.Length > Constants.NotExistedId)
{
requestBody.Seek(0, SeekOrigin.Begin);
if (fileExtension == Constants.HEICImageFormat || fileExtension == Constants.HEIFImageFormat || fileExtension == Constants.HEICImageFormat.ToUpper() || fileExtension == Constants.HEIFImageFormat.ToUpper())
{
using (MagickImage image = new MagickImage(requestBody))
{
image.Format = MagickFormat.Jpeg;
image.Quality = 50;
using (MemoryStream outputStream = new MemoryStream())
{
image.Write(outputStream);
outputStream.Position = 0;
string blobContainerfolderPath = _blobStorageService.GetBlobFileContainer((Enums.EntityTypes)Convert.ToInt32(req.Headers.GetValues(Constants.EntityTypeId).First()));
filePath = _blobStorageService.StreamUpload(outputStream, blobContainerfolderPath, ".jpeg", Path.GetFileNameWithoutExtension(item.FileName)).Result;
}
}
}
else
{
string blobContainerfolderPath = _blobStorageService.GetBlobFileContainer((Enums.EntityTypes)Convert.ToInt32(req.Headers.GetValues(Constants.EntityTypeId).First()));
filePath = _blobStorageService.StreamUpload(requestBody, blobContainerfolderPath, fileExtension, Path.GetFileNameWithoutExtension(item.FileName)).Result;
}
}
}
}
List param = _dbConnection.SetHeaders(null, Constants.UserId, req.Headers.GetValues(Constants.UserId).First());
param = _dbConnection.SetHeaders(param, Constants.ClientId, req.Headers.GetValues(Constants.ClientId).First());
param = _dbConnection.SetHeaders(param, Constants.ClientName, req.Headers.GetValues(Constants.ClientName).First());
param = _dbConnection.SetHeaders(param, Constants.BrandingColor, req.Headers.GetValues(Constants.BrandingColor).First());
param = _dbConnection.SetHeaders(param, Constants.FontColor, req.Headers.GetValues(Constants.FontColor).First());
param = _dbConnection.SetHeaders(param, Constants.Type, req.Headers.GetValues(Constants.Type).First());
param = _dbConnection.SetHeaders(param, Constants.ParentClient, req.Headers.GetValues(Constants.ParentClient).First());
param = _dbConnection.SetHeaders(param, Constants.ContactEmail, req.Headers.GetValues(Constants.ContactEmail).First());
param = _dbConnection.SetHeaders(param, Constants.SSOEnabled, req.Headers.GetValues(Constants.SSOEnabled).First());
param = _dbConnection.SetHeaders(param, Constants.HidePublicTools, req.Headers.GetValues(Constants.HidePublicTools).First());
param = _dbConnection.SetHeaders(param, Constants.LanguageIds, req.Headers.GetValues(Constants.LanguageIds).First());
param = _dbConnection.SetHeaders(param, Constants.TranslationRequired, req.Headers.GetValues(Constants.TranslationRequired).First());
param = _dbConnection.SetHeaders(param, Constants.VerticalReportEnabled, req.Headers.GetValues(Constants.VerticalReportEnabled).First());
param = _dbConnection.SetHeaders(param, Constants.LDPAssessmentEnabled, req.Headers.GetValues(Constants.LDPAssessmentEnabled).First());
param = _dbConnection.SetHeaders(param, Constants.CoCAssessmentEnabled, req.Headers.GetValues(Constants.CoCAssessmentEnabled).First());
param = _dbConnection.SetHeaders(param, Constants.GPSAssessmentEnabled, req.Headers.GetValues(Constants.GPSAssessmentEnabled).First());
param = _dbConnection.SetHeaders(param, Constants.Notes, parsedFormBody.Result.GetParameterValue(Constants.Notes));
param = _dbConnection.SetHeaders(param, Constants.FilePath, filePath.Replace("adeptiondatastorage.blob.core.windows.net", "adeption-data.azureedge.net"));
executionContext.InvokeResult(response, _dbConnection.GetResponse(Constants.uspClientAdminAdd, param));
return response;
}
catch (Exception ex)
{
throw new Exception(Message, ex);
}
Подробнее здесь:
https://stackoverflow.com/questions/781 ... at-in-body
1710482950
Гость
Я использую приложение функций Azure для привязки моей базы данных к интерфейсу. Теперь есть параметр для логотипа, который представляет собой файл больших двоичных объектов, это должен быть путь к файлу и он должен исходить из заголовка. Но если он имеет формат HEIC, он должен исходят из тела. Вот мой код, пожалуйста, кто-нибудь, скажите мне, как изменить его в соответствии с этим. [code][Function(nameof(AddOrUpdate))] [/code] public HttpResponseData AddOrUpdate([HttpTrigger(AuthorizationLevel.Anonymous, "post")] HttpRequestData req, FunctionContext ExecutionContext) { var ответ = ResponseDataService.GetDefaultResponseData(req ); [code]try { var parsedFormBody = MultipartFormDataParser.ParseAsync(req.Body); string filePath = string.Empty; foreach (var item in parsedFormBody.Result.Files) { Stream requestBody = item.Data; string fileExtension = Path.GetExtension(item.FileName); if (Constants.ImageFileFormats.Contains(fileExtension)) { if (requestBody != null & requestBody.Length > Constants.NotExistedId) { requestBody.Seek(0, SeekOrigin.Begin); if (fileExtension == Constants.HEICImageFormat || fileExtension == Constants.HEIFImageFormat || fileExtension == Constants.HEICImageFormat.ToUpper() || fileExtension == Constants.HEIFImageFormat.ToUpper()) { using (MagickImage image = new MagickImage(requestBody)) { image.Format = MagickFormat.Jpeg; image.Quality = 50; using (MemoryStream outputStream = new MemoryStream()) { image.Write(outputStream); outputStream.Position = 0; string blobContainerfolderPath = _blobStorageService.GetBlobFileContainer((Enums.EntityTypes)Convert.ToInt32(req.Headers.GetValues(Constants.EntityTypeId).First())); filePath = _blobStorageService.StreamUpload(outputStream, blobContainerfolderPath, ".jpeg", Path.GetFileNameWithoutExtension(item.FileName)).Result; } } } else { string blobContainerfolderPath = _blobStorageService.GetBlobFileContainer((Enums.EntityTypes)Convert.ToInt32(req.Headers.GetValues(Constants.EntityTypeId).First())); filePath = _blobStorageService.StreamUpload(requestBody, blobContainerfolderPath, fileExtension, Path.GetFileNameWithoutExtension(item.FileName)).Result; } } } } List param = _dbConnection.SetHeaders(null, Constants.UserId, req.Headers.GetValues(Constants.UserId).First()); param = _dbConnection.SetHeaders(param, Constants.ClientId, req.Headers.GetValues(Constants.ClientId).First()); param = _dbConnection.SetHeaders(param, Constants.ClientName, req.Headers.GetValues(Constants.ClientName).First()); param = _dbConnection.SetHeaders(param, Constants.BrandingColor, req.Headers.GetValues(Constants.BrandingColor).First()); param = _dbConnection.SetHeaders(param, Constants.FontColor, req.Headers.GetValues(Constants.FontColor).First()); param = _dbConnection.SetHeaders(param, Constants.Type, req.Headers.GetValues(Constants.Type).First()); param = _dbConnection.SetHeaders(param, Constants.ParentClient, req.Headers.GetValues(Constants.ParentClient).First()); param = _dbConnection.SetHeaders(param, Constants.ContactEmail, req.Headers.GetValues(Constants.ContactEmail).First()); param = _dbConnection.SetHeaders(param, Constants.SSOEnabled, req.Headers.GetValues(Constants.SSOEnabled).First()); param = _dbConnection.SetHeaders(param, Constants.HidePublicTools, req.Headers.GetValues(Constants.HidePublicTools).First()); param = _dbConnection.SetHeaders(param, Constants.LanguageIds, req.Headers.GetValues(Constants.LanguageIds).First()); param = _dbConnection.SetHeaders(param, Constants.TranslationRequired, req.Headers.GetValues(Constants.TranslationRequired).First()); param = _dbConnection.SetHeaders(param, Constants.VerticalReportEnabled, req.Headers.GetValues(Constants.VerticalReportEnabled).First()); param = _dbConnection.SetHeaders(param, Constants.LDPAssessmentEnabled, req.Headers.GetValues(Constants.LDPAssessmentEnabled).First()); param = _dbConnection.SetHeaders(param, Constants.CoCAssessmentEnabled, req.Headers.GetValues(Constants.CoCAssessmentEnabled).First()); param = _dbConnection.SetHeaders(param, Constants.GPSAssessmentEnabled, req.Headers.GetValues(Constants.GPSAssessmentEnabled).First()); param = _dbConnection.SetHeaders(param, Constants.Notes, parsedFormBody.Result.GetParameterValue(Constants.Notes)); param = _dbConnection.SetHeaders(param, Constants.FilePath, filePath.Replace("adeptiondatastorage.blob.core.windows.net", "adeption-data.azureedge.net")); executionContext.InvokeResult(response, _dbConnection.GetResponse(Constants.uspClientAdminAdd, param)); return response; } catch (Exception ex) { throw new Exception(Message, ex); } [/code] Подробнее здесь: [url]https://stackoverflow.com/questions/78164946/how-to-accept-filepath-in-header-and-heic-image-format-in-body[/url]