environnement ruby2.6.5 rails5.2.4 gem 'carrierwave' gem 'fog-aws'
Si le nom de fichier publié contient du japonais, le traitement ultérieur sera difficile. Avec gem'carrierwave ', vous pouvez renommer le fichier comme indiqué officiellement, alors commençons par là. Dans mon cas, j'ai décidé de sauvegarder le nom du fichier sous forme de caractère alphanumérique aléatoire. N'utilisez pas l'heure actuelle lors de l'enregistrement. Lors du redimensionnement, l'heure sera désactivée et une erreur se produira.
image_uploader.rb
def filename
"#{secure_token}.#{file.extension}" if original_filename.present?
end
def secure_token
var = :"@#{mounted_as}_secure_token"
model.instance_variable_get(var) or model.instance_variable_set(var, SecureRandom.uuid)
end
En écrivant de cette manière, le nom du fichier publié sera enregistré en caractères alphanumériques aléatoires. Bien que le nom de fichier ait été modifié avec uniquement le nom de fichier, l'accès à S3 n'a pas fonctionné, mais il a été résolu en ajoutant def secure_token.
routes.rb
resources :posts do
member do
get :download
end
end
posts_controller.rb
def download
url = URI.encode(@post.image.url)
data_path = open(url)
send_data data_path.read, disposition: 'attachment',
type: @post.image_type
end
Puisque mon niveau est un niveau débutant, je pense qu'il y a un gaspillage dans la description, mais pardonnez-moi s'il vous plaît.
Lorsque le nom de fichier contenait pour la première fois un nom japonais, il n'y avait aucun problème avec le téléchargement. Cependant, lorsque j'ai écrit la méthode de téléchargement et essayé de la télécharger, l'accès 502 refusé était affiché. Ce 502 est gênant et au début, je pensais que je n'avais pas accès à AWS, mais si je pouvais le télécharger, je devrais y avoir accès. Une enquête plus approfondie révèle que 502 est affiché même si l'URL n'est pas trouvée, En outre, il s'est avéré que la cause était la notation japonaise. C'est probablement la raison pour laquelle il s'agissait souvent d'un fichier alphanumérique aléatoire lors du téléchargement sur les sites de publication d'images.
Recommended Posts