J'essaie d'utiliser aws-sdk pour charger des fichiers s3 sur un disque local, et je me demande pourquoi mon fichier pdf (qui a juste un texte disant SAMPLE PDF) se révèle avec un contenu apparemment vide.Utiliser aws-sdk pour télécharger des fichiers à partir de s3. Encodage pas correct
Je suppose que cela a quelque chose à voir avec l'encodage ... mais comment puis-je le réparer?
Voici mon code:
require 'aws-sdk'
bucket_name = "****"
access_key_id = "***"
secret_access_key = "**"
s3=AWS::S3.new(
access_key_id: access_key_id,
secret_access_key: secret_access_key)
b = s3.buckets[bucket_name]
filen = File.basename("Sample.pdf")
path = "original/90/#{filen}"
o = b.objects[path]
require 'tempfile'
ext= File.extname(filen)
file = File.open("test.pdf","w", encoding: "ascii-8bit")
# streaming download from S3 to a file on disk
begin
file.write(o.read) do |chunk|
file.write(chunk)
end
end
file.close
Si je prends le encoding: "ascii-8bit"
, je viens d'obtenir un message d'erreur Encoding::UndefinedConversionError: "\xC3" from ASCII-8BIT to UTF-8
Lorsque vous ouvrez le fichier, essayez d'utiliser "wb" (écriture + binaire) au lieu de seulement "w". –