Attachment_fu, API et Application desktop java

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:inmethod_missing’
/vendor/plugins/attachment_fu/lib/technoweenie/attachment_fu.rb:
305:in uploaded_data=' /app/models/upshot.rb:150:injavafile=’
/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 :slight_smile:

Le 25 juin 2008 10:45, Romain Durritçague a écrit :

Dans notre model auquel est rattachée cette image, nous nous sommes
servi de ce snippet :
http://snippets.dzone.com/posts/show/3994

Le premier problème vient de là, le snippet a pour but :
“Make a remote URL work like a file upload (in Rails)”

or si j’ai bien compris ton but, tu ne traites pas d’url ici.

@@filepath = File.join(RAILS_ROOT, 'public/tmp', 'javatemp/')
   # 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)

Essaie avec File.open.

[…]

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 :slight_smile:

Ce n’est pas une question d’être un pro d’attachment_fu ou pas.
C’est d’essayer d’agréger des bouts de code à gauche à droite,
sans bien comprendre lesdits bouts de code. Alors quand on
assemble forcément, faut prier pour que ce patchwork veuille bien
marcher.

– Jean-François.


http://twitter.com/underflow_

ma fraise :

    @attachment_data = open(@completelink)

Essaie avec File.open.

Euh, non. En créant un fichier temporaire, plutôt (Tempfile).

– Jean-François.


http://twitter.com/underflow_

2008/6/25 Romain Durritçague [email protected]:

et avons ajouté la classe :

  end
end

305:in uploaded_data=' /app/models/upshot.rb:150:injavafile=’
/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 :slight_smile:

Je rejoins ce qu’a dit JF sur le point des agrégations de code.

Sinon en fait uploaded_data prend en valeur un IO. Donc forcement si
tu lui donnes une classe X quelconque ca utilisera des méthodes de IO
que tu n’as pas implémenter.

Donc soit tu implémentes les methodes qui manque (Merci le
duck-typing), soit tu lis le code d’attachment_fu, il est vraiment pas
compliqué. Je l’ai lu des dizaines de fois sans souci.


Cyril M.
http://blog.shingara.fr

Ola,

Cela pourra t’aider ainsi que d’autres. Il existe un plugin pour faire
ce genre de trucs (utilisation de attachment_fu sans avoir a manipuler
des IO et cie). Il s’appelle: AttachmentFuHacks que l’on peut trouve sur
GitHub.
Attention, l’auteur ne le precise pas (a moins qu’il ait mis a jour son
README) mais ce plugin a besoin d’un autre plugin qui gere les
mime-types: MimetypeFu (http://github.com/mattetti/mimetype-fu).
voila voila.

Did

This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.

| Privacy Policy | Terms of Service | Remote Ruby Jobs