Ruby Forum Rails France > communication flash et rails

Posted by Katebe Ibnmaleke (katebe)
on 20.06.2008 14:27
bonjour
je travail sur une application rails avec flash,j'envoie des donnes
depuis flash est ça marche ,le rails reçois ces données facilement ,
mon problème c'est que je voudrais que ces donnes soit affecter dans les
variables de rails par exemple:
flash envois une variable qui s'appelle Filedata ,je vérifier si il est
bien reçus avec  puts params[:Filedata] c'est bien.
dans mon apllication rails il y a une une variable
       params[:image][:uploaded_data]
car lorsque je travail sans flash j'utilise une formulaire qui fais ça
:
<% form_for(:contenu, :url => { :action=>'create'},:html => { :multipart
=> true }) do |f| -%>

  <p>
    <label for="title">Title</label><br/>
    <%= f.text_field :title %>
  </p>
  <p>
    <label for="summary">Summary</label><br/>
    <%= f.text_area :summary %>
  </p>
  <p>
    <label for="image">Associate Image:</label><br/>
    <%= file_field 'image','uploaded_data' %>
  </p>
  <p>
    <%= submit_tag 'Create' %>
  </p>
<% end -%>
je veux remplacer la ligne qui contien file_field car se travails se
fais au niveu de flash,

j'essaie avec plusieurs méthode  :
 1--   params[:uploaded_data] = params[:Filedata]
 2--   params[:image][:uploaded_data] = params[:Filedata]
 3--   <%= hidden_field 'image', 'uploaded_data', :value =>
params[:Filedata] %>

j'ai passé 3 jour pour résolu ce problème mais rien  ,si quelqu'un a des
solution je suis preneur ,et merci d'avance .
Posted by Michel Belleville (Guest)
on 20.06.2008 14:37
(Received via mailing list)
Essayer de mettre du HTML dans du flash, c'est souvent une mauvaise 
idée.

Tu ferais mieux d'envoyer du XML tout propre à flash, qui sait très bien
gérer le XML.
Posted by Michel Belleville (Guest)
on 20.06.2008 14:39
(Received via mailing list)
(maintenant j'avoue que ça fait 3 fois que je relis ton mail et que je
n'arrive toujours pas à comprendre ce que tu essaye de faire)
Posted by Katebe Ibnmaleke (katebe)
on 20.06.2008 15:48
bonjour

> (maintenant j'avoue que ça fait 3 fois que je relis ton mail et que je
> n'arrive toujours pas à comprendre ce que tu essaye de faire)

je ré explique mon problème :
ce code <%= file_field 'image','uploaded_data' %> sert a enregistre le 
path de file choisis dans le params uploaded_data qui est une attribut 
d'image ,c'est ça?
je veux affecter a uploaded_data d'image le contenu de Filedata envoyer 
par flash

sans file_fields,
j'espère que mon mail soit compréhensible ,et merci a tout
Posted by Michel Belleville (Guest)
on 20.06.2008 16:47
(Received via mailing list)
Bon, c'est toujours vague, mais je vais faire avec.

Si ton problème est d'envoyer un fichier en utilisant Flash, alors il 
vaut
mieux poser la question sur un forum ou une mailing-list dédiée à 
Macromedia
Flash (c). Il y en a plein, en voici un que je trouve sympa :
http://flashhouse.free.fr/forums/. <http://flashhouse.free.fr/forums/> 
Ici
je crains que tu ne trouve pas de réponse à cette question, Ruby on 
Rails
peut très bien tolérer une interface Macromedia Flash (c), et du moment 
que
Macromedia Flash (c) sait envoyer un fichier par HTTP, Rails peut le
recevoir.

Maintenant, Rails ne contient pas Macromedia Flash (c) justement à cause 
de
"Macromedia" et de "(c)". Ruby on Rails est un outil open-source, 
Macromedia
Flash (c) est une technologie privative, et cette mailing list n'a pas 
pour
vocation de servir de support aux produits Macromedia...
Posted by Tony Chauveau (kusanar)
on 20.06.2008 18:23
Katebe Ibnmaleke wrote:
> bonjour
> 
>> (maintenant j'avoue que ça fait 3 fois que je relis ton mail et que je
>> n'arrive toujours pas à comprendre ce que tu essaye de faire)
> 
> je ré explique mon problème :
> ce code <%= file_field 'image','uploaded_data' %> sert a enregistre le 
> path de file choisis dans le params uploaded_data qui est une attribut 
> d'image ,c'est ça?
> je veux affecter a uploaded_data d'image le contenu de Filedata envoyer 
> par flash
> 
> sans file_fields,
> j'espère que mon mail soit compréhensible ,et merci a tout

Si j'ai bien compris, tu souhaites qu'un objet flash remplace ton upload 
de fichier dans le formulaire.
Si tel est le cas, tu ne devrais pas avoir un file_field mais un simple 
text_field (voir meme un hidden_field) qui contiendra le nom du fichier 
uploadé via ton objet flash.
L'upload en lui meme étant réalisé via flash, une fonction javascript te 
permettra alors de remplir ton champs avec le nom du fichier

Mais ce que tu ne peux pas faire (et il semble que ce soit ce que tu 
souhaites faire), c'est poser un fichier récupéré dans ton objet flash 
dans ton formulaire...
Il y a bien 2 actions distinctes :
Flash envoi le fichier et retourne le nom du fichier a ton javascript 
qui va l'écrire dans ton champs
Le formulaire est posté pour renseigner ta base avec les champs dont le 
nom du fichier uploadé.
Posted by Sébastien Lamy (Guest)
on 20.06.2008 18:51
(Received via mailing list)
Katebe Ibnmaleke a écrit :
> bonjour
> je travail sur une application rails avec flash,j'envoie des donnes
> depuis flash est ça marche ,le rails reçois ces données facilement ,
> mon problème c'est que je voudrais que ces donnes soit affecter dans les
> variables de rails par exemple:
> flash envois une variable qui s'appelle Filedata ,je vérifier si il est
> bien reçus avec  puts params[:Filedata] c'est bien.
>   

De quel type est ce params[:Filedata] envoyé par flash et reçu par 
Rails?
C'est un String ou un fichier?
Avant que tu ne rajoute ton bout de flash, Rails s'attend à recevoir un
fichier dans params[:image][:uploaded_data]. Si tu lui donne autre
chose, il ne va pas être content, ou alors il va falloir lui expliquer
comment se débrouiller avec ce que tu lui donne.
Si c'est un String, je vois pas trop comment Rails va se débrouiller
pour ramener le fichier qui, de son coté, est resté sur la machine
cliente (celle ou il y a le mec en train de cliquer dans son navigateur
web).

Dans ce cas, comme le suggérait Tony, il ne faut pas que flash parle
directement à ton serveur rails, mais qu'il parle au navigateur de la
machine cliente, en javascript, pour lui dire: met ce nom de fichier
dans le champs du formulaire prévu à cet effet, puis soumet le
formulaire au serveur.
Posted by Sébastien Lamy (Guest)
on 24.07.2008 09:13
(Received via mailing list)
Katebe Ibnmaleke a écrit :
> :
>   
Il est peut-être un peu tard pour répondre, mais aujourd'hui le rails
envy podcast pointe sur un lien qui semble parler de ce problème
d'upload via flash

http://seventytwo.co.uk/posts/making-swfupload-and-rails-work-together

Si tu as déjà résolu ce problème, ça servira peut-être à quelqu'un qui
tappera sur google
Posted by Cyrille (Guest)
on 25.07.2008 11:08
(Received via mailing list)
J'utilise SwfUpload pour mon projet actuel et je voulais juste
preciser que SwfUpload est une approche differente de ce qui est
decrit plus haut: c'est une petite application Flash qui communique
avec du Javascript.

Cette approche comporte plusieurs avantages:

* on peut uploader plusieurs fichiers a la fois
* on peut filtrer les types de fichiers valides
* surtout, l'appli peut indiquer immediatement au client si le fichier
a uploader est trop gros (avec une approche cote serveur, tout le
fichier doit etre uploade avant de pouvoir afficher une erreur...)

Par contre, il y a pas mal d'obstacles a surmonter (l'article en
parle, ms je n'ai pas regarde en detail):
* probleme de securite (il faut remettre la session a la main dans
l'URL + hacker CGI::Session, yuck!)
* probleme de mime type (la, il faut un hack d'attachment_fu +
mimetype_fu)

Donc c'est une solution tres pratique, mais pas super evidente a
mettre en place. Enfin, l'article a l'air bien: dommage qu'il ne soit
pas sorti un peu plus tot, ca m'aurait aide...

Cyrille