0

Momentan lade ich das Bild aus meinem Cloud-Speicher-Bucket, kodiere es in base64 und gebe es dann in Daten-URI im src-Attribut eines img-Tags weiter.Wie wird das Bild angezeigt, das aus dem Cloud-Speicher im Browser heruntergeladen wurde?

Gibt es eine andere Möglichkeit, dies zu tun?

router.post('/images', function(req, res, next) { 
    var image = bucket.file(req.body.image); 
    image.download(function(err, contents) { 
     if (err) { 
      console.log(err); 
     } else { 
      var resultImage = base64_encode(contents); 
      var index = req.body.index; 
      var returnObject = { 
       image: resultImage, 
       index: index 
      } 
      res.send(returnObject); 
     } 
    }); 
}); 

Antwort

1

Ist das Bild öffentlich lesbar? Wenn ja, können Sie nur

verwenden
<img src="http://<bucket>.storage.googleapis.com/<object>"> 

Andernfalls müssen Sie eine signed URL für eine GET-Operation erzeugen, die in einem Image-Tag verwendet werden kann.

+0

Leider sind das 2 Optionen, die ich aus Sicherheitsgründen nicht verwenden möchte. Jeder könnte diese URLs treffen, damit mein Backend das Knie beugt. – TheProgrammer

+0

Können Sie Ihre Bedenken bezüglich signierter URLs klären? Das Generieren einer signierten URL auf der Serverseite verursacht Kosten, aber wenn Sie nicht Tausende von ihnen pro Sekunde generieren müssen, sollte dies auch für einen sehr kleinen Computer machbar sein. –

+0

@BrandonYarbrough Es geht um Sicherheit. Jeder könnte eine signierte URL legal von meiner Website bekommen und dann diese URL mit einem Bot oder einem Botnet millionenfach schlagen. Erhalte dann eine andere signierte URL, wenn die aktuelle abläuft, und so weiter. Deshalb lade ich gerade die Bilder aus dem Bucket auf meinen Server herunter. Niemand bekommt Zugang zu meinem Eimer außer meinem Server. Das einzige Problem ist, dass das Laden von 64-Bit-codierten Bildern ein bisschen langsamer ist, also frage ich mich, ob es andere bessere Lösungen gibt, die auch sicher sind. – TheProgrammer

Verwandte Themen