2012-12-22 1 views
2

예를 들어 레일 애플리케이션이 있습니다. example.com. 어떤 종류의 파일 (비디오, 이미지, ...)에도 클라우드 스토리지 공급자를 사용하고 있습니다. 아니요 실제 저장 위치의 URL을 공개하지 않고 해당 파일을 다운로드 할 수있게하려고합니다. 그래서 나는 일종의 프록시를 생각하고있었습니다. 다음과 같을 수 있습니다 간단한 컨트롤러 :원격 파일 다운로드 용 프록시로 레일

data = open(params[:file]) 
filename = "#{RAILS_ROOT}/tmp/my_temp_file" 

File.open(filename, 'r+') do |f| 
    f.write data.read 
end 

send_file filename, ...options... 

(a link에서 가져온 코드).

포인트의 존재는 내가 먼저 파일을 다운로드해야한다는 것입니다. 그래서 클라우드 스토리지를 먼저 다운로드하지 않고 파일을 즉시 스트리밍 할 수 있는지 궁금합니다.

최고의 필립

답변

1
내가 얼마 전에이 정확한 문제에 대한 작업이이 서버에 파일을 다운로드 한 다음 클라이언트와에게 전달하지 않고 가능하지 않을 것이라는 결론에 도달했다

너는 말한다. 사용자가 페이지의 다운로드 링크를 클릭 할 때마다 숨겨진 iframe에 삽입하는 서명 된 만료 다운로드 링크를 생성하는 것이 좋습니다. 이렇게하면 파일로 인해 서버로 불필요한 왕복을하지 않고도 페이지에서 다운로드 경험을 얻을 수 있습니다. 그것이 가능하지 않은 경우

+0

안녕 Nihuepana, 나는 확실하지 않다. 나는 tcpsocket을 사용하는 해결책이있을 것이라고 생각하지만, 이것은 webrick에서 작동하지 않을 것이다. 여기에 reade [링크] (http://stackoverflow.com/questions/14356704/rails-3-2-streaming-data) – dc10

관련 문제