Je cherche un moyen de télécharger des images qui ont été créées dans mon application flexible sur rails. J'ai essayé d'utiliser un trombone, mais cela ne semble pas fonctionner.Téléchargement d'images de Flex à Rails en utilisant Paperclip
J'ai ce tutoriel ici: http://blog.alexonrails.net/?p=218
Le problème est, qu'ils utilisent un FileReference pour rechercher des fichiers sur l'ordinateur des clients. Ils appellent la fonction .upload (...) et envoient les données au contrôleur de téléchargement. Mais j'utilise un URLLoader pour télécharger une image, qui est modifiée dans mon Flex-App. Tout d'abord, voici le code du tutoriel:
private function selectHandler(event:Event):void {
var vars:URLVariables = new URLVariables();
var request:URLRequest = new URLRequest(uri);
request.method = URLRequestMethod.POST;
vars.description = "My Description";
request.data = vars;
var uploadDataFieldName:String = 'filemanager[file]';
fileReference.upload(request, uploadDataFieldName);
}
Je ne sais pas comment définir que
var uploadDataFieldName:String = 'filemanager[file]';
dans un URLLoader. J'ai les données d'image compressées en JPEG dans un ByteArray. Il ressemble à ceci:
public function savePicture():void {
var filename:String = "blubblub.jpg";
var vars:URLVariables = new URLVariables();
vars.position = layoutView.currentPicPosition;
vars.url = filename;
vars.user_id = 1;
vars.comic_id = 1;
vars.file_content_type = "image/jpeg";
vars.file_file_name = filename;
var rawBytes:ByteArray = new JPGEncoder(75).encode(bitmapdata);
vars.picture = rawBytes;
var request:URLRequest = new URLRequest(Data.SERVER_ADDR + "pictures/upload");
request.method = URLRequestMethod.POST;
request.data = vars;
var loader:URLLoader = new URLLoader(request);
loader.addEventListener(Event.COMPLETE, savePictureHandler);
loader.addEventListener(IOErrorEvent.IO_ERROR, errorHandlerUpload);
loader.load(request);
}
Si je mets le var.picture URLVariable au bytearray, je reçois l'erreur, que le téléchargement est nul. Voici la partie Rails:
Image-Modèle:
require 'paperclip'
class Picture < ActiveRecord::Base
# relations from picture
belongs_to :comic
belongs_to :user
has_many :picture_bubbles
has_many :bubbles, :through => :picture_bubbles
# attached file for picture upload -> with paperclip plugin
has_attached_file :file, :path => "public/system/pictures/:basename.:extension"
end
et le contrôleur d'image avec la fonction de téléchargement:
class PicturesController < ApplicationController
protect_from_forgery :except => :upload
def upload
@picture = Picture.new(params[:picture])
@picture.position = params[:position]
@picture.comic_id = params[:comic_id]
@picture.url = params[:url]
@picture.user_id = params[:user_id]
if @picture.save
render(:nothing => true, :status => 200)
else
render(:nothing => true, :status => 500)
end
end
end
Est-ce que quelqu'un sait comment pour résoudre ce problème?
thx, tux