2010-02-08 4 views
0

플렉스 앱에서 만든 이미지를 레일에 업로드하는 방법을 찾고 있습니다. 클립 클립을 사용하려고했지만 작동하지 않습니다.클립을 사용하여 플렉스에서 레일스로 이미지 업로드하기

내가 여기에이 튜토리얼있어 : http://blog.alexonrails.net/?p=218

문제는 그들이 클라이언트 컴퓨터에서 파일을 검색하기 위해의 FileReference를 사용하고 있는지,입니다. 그들은 .upload (...) 함수를 호출하고 업로드 컨트롤러에 데이터를 보냅니다. 하지만 URLLoader를 사용하여 이미지를 업로드하고 있는데, 이는 Flex-App에서 수정되었습니다. 난은 URLLoader에서 그

var uploadDataFieldName:String = 'filemanager[file]'; 

을 설정하는 방법을 모르는

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); 
} 

: 첫째, 여기에 튜토리얼의 코드입니다. ByteArray에서 JPEG로 압축 된 이미지 데이터가 있습니다. 그것은 다음과 같습니다

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); 
    } 

그때 내가 업로드가 전무 즉, 오류는이 ByteArray에 var.picture URLVariable을 설정합니다.

사진 - 모델 :

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 

사람이 알고 있나요 :

는 '클립'

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 

및 업로드 기능을 가진 사진 컨트롤러가 필요 여기 은 레일 부분입니다 이 문제를 해결하려면?

들으,

답변

0

이 당신의 "파일 관리자 [파일]"을 "그림 [파일]"변경해보십시오 턱시도. 컨트롤러에 매핑하는 것과 관련이 있다고 생각합니다.

RestfulX을 확인하십시오.이 문제는 매우 잘 해결되었습니다. 구체적으로는 XMLHTTPServiceProvider#uploadFile 메소드를 살펴보십시오. 그들은 거기에 당신이 작성한 것과 같은 다른 구현을 가지고 있습니다. Paperclip으로 몇 가지 프로젝트에서 사용하고 있으며 완벽하게 작동합니다.

guchub의 Pomodo on Rails 샘플 응용 프로그램은 프로필 이미지를 업로드하기 위해 클립을 사용한다고 생각합니다.

도움이 되길 바랍니다. 랜스

관련 문제