In meiner App sende ich Fotos direkt vom Client an s3, wobei ich eine ähnliche Heroku-Empfehlung verwende: Ссылка
Der Hauptvorteil ist, dass es Serverkosten spart (ich nehme an, da Chunks nicht mit etwas wie Multiparty-y-Formulardaten an den Server gesendet werden).
Allerdings möchte ich diese Bilder auch an Twitter weitergeben können, wo diese Anforderung steht:
Stellen Sie sicher, dass der POST eine mehrteilige / Formulardatenanforderung ist. Laden Sie entweder die rohe Binärdatei (Medienparameter) der Datei oder deren Base64-codierte Inhalte (Parameter "media_data") hoch. Verwenden Sie möglichst rohe Binärdateien, da die base64-Codierung zu größeren Dateigrößen führt
Ich habe versucht, die base64, die für den clientseitigen s3-Upload benötigt wird, zurück auf den Server zu schicken, aber abhängig von der Fotogröße - bekomme ich oft einen Fehler, dass es zu groß ist, um es zurückzusenden.
TLDR
Muss ich meine Fotos mit mehrteiligen / mehrteiligen Formulardaten an meinen Server senden, damit ich das benötigte base64 / binary verwenden kann, um ein Foto mit twitter zu teilen, oder kann ich weiterhin Fotos von meinem Client an s3 senden?
Dann, irgendwie, effizient erhalten Sie die benötigte base64 / binary auf dem Server (möglicherweise mit dem Anfrage-Modul), so kann ich dann das Bild an twitter?
Eine relativ einfache Möglichkeit, dies zu tun, ohne Ihren Client-Code zu ändern, wäre die Verwendung von S3-Ereignisse . S3-Ereignisse können in AWS eine Lambda-Funktion auslösen, die das Bild auf Twitter posten kann. Sie können jede Bibliothek innerhalb der Lambda-Funktion verwenden, um effizient auf Twitter zu veröffentlichen. Nicht sicher, ob Sie Lambda verwenden oder sich an Heroku halten möchten.
Wenn Sie Dokumente direkt vom Client hochladen, um sie zu s3 hochzuladen, setzen Sie Ihre geheimen / privaten AWS-Schlüssel dem Client zur Verfügung. Ein sicherer Weg wäre, die Bilder auf den Knoten und den Knoten hochzuladen und sie wiederum in S3 hochzuladen. Eine empfohlene Methode zum Hochladen von Bildern auf den Knotenserver wäre die Verwendung multipart / form-data und mit Middleware Multer .
Unabhängig von der Upload-Methode können Sie den folgenden Code verwenden, um Bilder zu twittern. Dieser Code verwendet das AWS-SDK -Modul.
%Vor%Diese Methode kann wie jede andere Express-App skaliert werden.
Tags und Links node.js twitter base64 amazon-web-services multipartform-data