AWS-S3-Datei, Download vom client-Seite

Ich bin versucht derzeit, laden Sie die Datei aus dem s3-bucket über einen button auf dem front-end. Wie ist es möglich, dies zu tun? Ich habe keine Idee, wie man dieses Ding. Ich habe versucht, forscht und forscht, aber kein Glück — ich habe gesucht sind über HOCHLADEN Dateien auf den s3-bucket, aber nicht HERUNTERLADEN – Dateien. Vielen Dank im Voraus.

HINWEIS: ich beziehe es auf ReactJS (Frontend) und NodeJS (Backend) und auch, die Datei ist hochgeladen mit Webmerge

UPDATE: ich versuche zu generieren, die einen download-link mit diesem (Versucht den Knoten auch wenn ich nicht ein backend-dev) (lol)

siehe Bilder unten

was ich bisher versucht habe

onClick-Funktion

  • Was haben Sie versucht ? Einfache Suche gibt mir diese Seite docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/…
  • developer.mozilla.org/en-US/docs/Web/HTML/Element/a
  • Es ist eigentlich nur ein HTTP-GET (also einen standard-web-download), ich denke, mit den richtigen Anmeldeinformationen angebracht werden, wenn es ein nicht-öffentliches Eimer.
  • Oh ich sehe, nicht finden können, die richtige Anmeldeinformationen tho
  • Sie können Anker-tag für den link zu dieser Datei. Und bitte erläutern Sie Ihre Antwort so, dass andere verstehen können, was Sie zu tun versuchen, und dem, was Sie getan haben, noch.
  • Ich update meine Frage. Vielen Dank 🙂
  • Ich aktualisiert meine Frage und unterstützt es mit Bildern von codes. Vielen Dank 🙂
  • Ich aktualisiert meine Frage und unterstützt es mit Bildern von codes. Vielen Dank 🙂

InformationsquelleAutor Jason Javier | 2018-09-28



2 Replies
  1. 4

    Wenn die Datei, die Sie herunterzuladen versuchen, ist nicht öffentlich, dann müssen Sie erstellen Sie eine signierte url zu bekommen, dass die Datei.

    Die Lösung ist hier Javascript-download einer Datei von einem amazon s3-bucket?
    für die erste nicht öffentliche Dateien, die dreht sich um die Schaffung einer lambda-Funktion erzeugt eine signierte url für Sie ist, dann verwenden Sie diese url, um die Datei herunterzuladen, auf die Schaltfläche klicken Sie auf

    ABER wenn die Datei, die Sie herunterladen möchten, Sie öffentlich ist, dann brauchen Sie nicht einer signierten url, Sie müssen nur wissen, den Pfad zu der Datei, die urls aufgebaut sind wie: https://s3.amazonaws.com/ [file path]/[filename]

    Sie ist auch aws verstärken Ihre erstellten und verwalten von AWS-team.

    Folgen Sie einfach Einstieg und Download der Datei von Ihrem reagieren, die app ist einfach:

    Storage.get('hello.png', {expires: 60})
    .then(result => console.log(result))
    .catch(err => console.log(err));
    • Super!!! Vielen Dank 🙂
    • Bitte lassen Sie mich wissen, wie es geht und ob meine Antwort war jede Hilfe zu Sie ich würde ich schätzen, wenn ich ein upvote oder markiert die richtige Antwort 🙂
  2. 1

    Hier ist meine Lösung:

    let downloadImage = url => {
      let urlArray = url.split("/")
      let bucket = urlArray[3]
      let key = `${urlArray[4]}/${urlArray[5]}`
      let s3 = new AWS.S3({ params: { Bucket: bucket }})
      let params = {Bucket: bucket, Key: key}
      s3.getObject(params, (err, data) => {
        let blob=new Blob([data.Body], {type: data.ContentType});
        let link=document.createElement('a');
        link.href=window.URL.createObjectURL(blob);
        link.download=url;
        link.click();
      })
    }

    Die url in das argument bezieht sich auf die url der S3-Datei.

    Nur diese in der onClick – Methode für die Schaltfläche. Benötigen Sie auch die AWS SDK

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.