You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
54 lines
1.6 KiB
54 lines
1.6 KiB
using Azure.Storage.Blobs;
|
|
using Microsoft.AspNetCore.Http;
|
|
using Microsoft.AspNetCore.Mvc;
|
|
using Microsoft.Azure.Functions.Worker;
|
|
using Microsoft.Extensions.Logging;
|
|
|
|
namespace CDP
|
|
{
|
|
public class CDPBlobStorage
|
|
{
|
|
private readonly ILogger<CDPBlobStorage> _logger;
|
|
|
|
public CDPBlobStorage(ILogger<CDPBlobStorage> logger)
|
|
{
|
|
_logger = logger;
|
|
}
|
|
|
|
static internal async Task<IActionResult> UploadBlobInternal(FileUploadDto dto, ILogger _logger)
|
|
{
|
|
string Connection = Constants.StorageConnString;
|
|
|
|
try
|
|
{
|
|
byte[] fileBytes = Convert.FromBase64String(dto.FileContent);
|
|
var blobSvc = new BlobServiceClient(Connection);
|
|
var blobClient = blobSvc.GetBlobContainerClient(dto.AppKey.ToLower());
|
|
|
|
if (!blobClient.Exists())
|
|
{
|
|
await blobClient.CreateAsync();
|
|
}
|
|
|
|
var blob = blobClient.GetBlobClient(string.Format("{0}-{1}", dto.FileId, dto.VersionId));
|
|
Stream fs = new MemoryStream(fileBytes);
|
|
var res = await blob.UploadAsync(fs);
|
|
return new OkObjectResult(res);
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
_logger.LogError(ex.ToString());
|
|
return new BadRequestObjectResult(ex);
|
|
}
|
|
}
|
|
}
|
|
|
|
public class FileUploadDto
|
|
{
|
|
public required string AppKey { get; set; }
|
|
public required string FileId { get; set; }
|
|
public required string FileContent { get; set; }
|
|
|
|
public required string VersionId { get; set; }
|
|
}
|
|
}
|