So stellen Sie ein Bild aus Azure Blob Storage bereit, als ob es in meiner Web-App gehostet würde
Posted: 08 Jan 2025, 08:14
Ich habe:
) mit der Absicht, es als src-Attribut eines img-Tags an anderer Stelle in der App zu referenzieren.
Bisher war ich dazu in der Lage um das Bild von meiner REST-API bereitzustellen (), indem Sie einen benutzerdefinierten „Medien“-Endpunkt erstellen, der einen Pfad zum Bild annimmt, eine SAS-URL für den Azure-Blob generiert und Anforderungen von myapi.com/media/image.png an den SAS umleitet URL.
Dies hat das gewünschte Verhalten, einen permanenten Link zum Bild zu erstellen und die SAS-Token-URL für den Benutzer zu verschleiern, aber idealerweise würde ich gerne myapp.com verwenden anstelle von myapi.com. Sollte ich nach Angular-Routen suchen, um dies zu erreichen, oder gibt es einen einfacheren Weg, dies zu erreichen? Ist diese Art der URL-Verschleierung überhaupt eine gute Praxis?
- Eine mit Angular gerenderte Web-App ()
Code: Select all
myapp.com
- Eine C#-REST-API, die von der Web-App aufgerufen wird ()
Code: Select all
myapi.com
- Ein Azure Blob Storage-Konto mit privaten und öffentlichen Containern ()
Code: Select all
myblob.com
Code: Select all
myapp.com/media/image.png
Bisher war ich dazu in der Lage um das Bild von meiner REST-API bereitzustellen (
Code: Select all
myapi.com/media/image.png
Code: Select all
[HttpGet("{path}")]
public IActionResult GetFileAsync(string path, CancellationToken cancellation)
{
string containerName = "mycontainer";
var blobContainerClient = _blobServiceClient.GetBlobContainerClient(containerName);
var blobClient = blobContainerClient.GetBlobClient(path);
var sasUri = blobClient.GenerateSasUri(
Azure.Storage.Sas.BlobSasPermissions.Read,
DateTimeOffset.UtcNow.AddHours(1));
var signedUrl = blobClient.Uri + sasUri.Query;
return Redirect(signedUrl);
}