Je travaille sur une application rails pour laquelle j'utilise carrierwave avec stockage de brouillard. J'ai un couple de champs dans mon formulaire où les utilisateurs peuvent soumettre une application son (Nom, courte & longue description, champ d'image). Le nom du fichier téléchargé est obtenu à partir du champ Nom dans le champ "Nom" de mon formulaire. Par exemple, lorsque je télécharge un fichier portant le nom Notepad
, tout fonctionne correctement et l'image s'affiche sur ma page d'applications. Toutefois, lorsque je télécharge une image portant le nom Notepad++
dans le champ de formulaire, elle est transférée avec succès sur Amazon, mais une image est brisée. Afficher sa source et essayer d'ouvrir son URL produit une erreurAccès Amazon S3 Refus lors de la lecture des fichiers de seau S3 avec le signe "+"
<Error>
<Code>AccessDenied</Code>
<Message>Access Denied</Message>
<RequestId>0DBACCF4C0301B02</RequestId>
<HostId>
raYVzr9xubG0NA/b57saIJzfc2YhnvhD0tafYmo34ewOBY6/0j1AKUFC/lEoY+6h
</HostId>
</Error>
Cela se produit pour tous les noms avec le signe plus. Quel pourrait être le problème. J'ai essayé tout ce que je pouvais mais rien. Ceci est ma classe image_uploader
# encoding: utf-8
class ImageUploader < CarrierWave::Uploader::Base
include CarrierWave::RMagick
storage :fog
include CarrierWave::MimeTypes
process :set_content_type
def store_dir
"uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.name.to_s.downcase.underscore || model.id.to_s.underscore.downcase}"
end
def filename
"#{model.name.to_s.underscore.downcase}-#{secure_token}" if original_filename.present?
end
def default_url
"fallback/#{model.class.to_s.underscore}/" + [version_name, "noimage.gif"].compact.join('_')
end
version :nano_thumb do
process :resize_to_fill => [20, 20]
end
version :mini_thumb do
process :resize_to_fill => [25, 25]
end
version :small_thumb do
process :resize_to_fill => [34, 34]
end
version :thumb do
process :resize_to_fill => [48, 48]
end
version :small do
process :resize_to_fill => [86, 86]
end
version :medium do
process :resize_to_fill => [259, 259]
end
version :large do
process :resize_to_fill => [518, 518]
end
def extension_white_list
["jpg", "jpeg", "gif", "png", ""]
end
protected
def secure_token(length=9)
var = :"@#{mounted_as}_secure_token"
model.instance_variable_get(var) or model.instance_variable_set(var, SecureRandom.hex(length/2))
end
end
Merci de
remercie en fait la gem 'carrierwave' qui ne code pas correctement les caractères correctement. –