Salut à tous,
Dans le cadre du développement de notre service, nous sommes en train
de créer une application desktop en java qui permettra d’envoyer
directement une image à notre application rails.
Cette image est codée en base64 du côté java et les informations sont
envoyées en xml.
Nous utilisons attachment_fu pour gérer les images dans notre
application rails.
Dans notre model auquel est rattachée cette image, nous nous sommes
servi de ce snippet :
http://snippets.dzone.com/posts/show/3994
et avons fait :
def javafile=(base64file)
self.uploaded_data = JavaFileUpload.new(base64file, self.title)
end
et avons ajouté la classe :
class JavaFileUpload
@@filepath = File.join(RAILS_ROOT, 'public/tmp', 'javatemp/')
EXTENSIONS = {
"image/jpeg" => ["jpg", "jpeg", "jpe"],
"image/gif" => ["gif"],
"image/png" => ["png"]
}
attr_reader :original_filename, :attachment_data
def initialize(base64file, title)
Là on crée un fichier temporaire à partir du “base64file”
Le fichier est bien créé et valide , je vous passe donc le code de
ça
# Dans @completelink on a le chemin local complet vers le
fichier
@attachment_data = open(@completelink)
@original_filename = title #(le title contient le nom complet
de l’image avec l’extension)
end
end
# Pass things like size, content_type, path on to the downloaded
file
def method_missing(symbol, *args)
if self.attachment_data.respond_to? symbol
self.attachment_data.send symbol, *args
else
super
end
end
end
Malheureusement, nous obtenons à chaque fois :
NoMethodError (undefined method size' for #<Upshot::JavaFileUpload: 0x26ff7dc>): /app/models/upshot.rb:211:in
method_missing’
/vendor/plugins/attachment_fu/lib/technoweenie/attachment_fu.rb:
305:in uploaded_data=' /app/models/upshot.rb:150:in
javafile=’
/app/controllers/upshots_controller.rb:90:in `create’
et nous ne comprenons pas cette erreur.
Merci d’avance si un pro d’attachment_fu saurait nous donner une piste
sur ce problème