플렉스에선, 다른 서버의 업로드와 똑같이, 파일업로드기능 구현후 UrlRequest를 통해, url을 레일스의 컨트롤러 경로에 보낸다.
그리고, 레일스에는
Class UploadController < ApplicationController
def load
if saveloadFile(params[:Filedata],params[:Filename].to_s)
render(:xml => "")
end
end
여기서 saveloadFile은 곧 만들게 될 정의함수이고, :Filedata, :Filename 해시를 통해 파일의 정보를 받아오게 된다. 그걸 saveloadFile 함수에 넘겨줘서 true를 호출한다면, 렌더링 된다.
def saveloadFile(fdata, fname)
filePath = "저장할 경로/+fname"
if File.open(filePath, "wb") { |b| b.write(fdata.read) }
return true
else
return false
end
end
경로를 지정하여, 파일이름 복수문제가 있을 경우엔 Time.now() 함수 같은걸로 해당시간을 고유키로 만들어 붙이는 방식으로 해결할 수 있다.
//참고
http://mindrulers.blogspot.com/2007/04/file-upload-in-flex-rubu-on-rails_3231.html