Hier, j'ai fait une session de codage nocturne profonde et créé une petite application node.js / JS (enfin CoffeeScript, mais CoffeeScript est juste du JavaScript, disons JS).
quel est le but:
- le client envoie un canevas datauri (png) au serveur (via socket.io)
- le serveur télécharge l'image sur amazon s3
l'étape 1 est terminée.
le serveur a maintenant une chaîne a la
data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAMgAAADICAYAAACt...
ma question est: quelles sont mes prochaines étapes pour «diffuser» / télécharger ces données sur Amazon S3 et y créer une image réelle?
knox https://github.com/LearnBoost/knox semble être une bibliothèque géniale pour METTRE quelque chose dans S3, mais ce qui me manque, c'est le lien entre la chaîne d'image encodée en base64 et l'action de téléchargement réelle ?
Toutes les idées, pointeurs et commentaires sont les bienvenus.
javascript
node.js
amazon-s3
coffeescript
Franz Enzenhofer
la source
la source
Réponses:
Pour les personnes qui sont encore aux prises avec ce problème. Voici l'approche que j'ai utilisée avec aws-sdk natif.
à l'intérieur de votre méthode de routeur: - ContentType doit être défini sur le type de contenu du fichier image
Le fichier s3_config.json est: -
la source
How to make S3 generates a unique KEY to prevent from overriding files?
etIf I don't set the ContentType, when I download the files I won't be able to get the correct file?
je veux dire, j'obtiendrai un fichier aussi corrompu? Merci d'avance!ContentEncoding: 'base64'
n'est pas correct carnew Buffer(..., 'base64')
décode la chaîne codée en base64 dans sa représentation binaire.ok, celui-ci est la réponse comment enregistrer les données du canevas dans un fichier
fondamentalement ça se détache comme ça dans mon code
la source
Voici le code d'un article que j'ai rencontré, posté ci-dessous:
En savoir plus: http://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/S3.html#upload-property
Crédits: https://medium.com/@mayneweb/upload-a-base64-image-data-from-nodejs-to-aws-s3-bucket-6c1bd945420f
la source
La réponse acceptée fonctionne très bien, mais si quelqu'un a besoin d'accepter un fichier au lieu de seulement des images, cette expression rationnelle fonctionne très bien:
/^data:.+;base64,/
la source