2009-08-12 2 views
6

멀티 파트 양식을 사용하여 안정적인 웹 서비스 (팬더 비디오 인코딩 서비스)로 데이터를 보내려면 restclient를 사용하고 있습니다. 트릭이긴하지만, restclient (Technoweenie branch)에 전달할 파일이 사용자가 제출하는 내 양식에서 오는 것입니다.멀티 파트 게시물에 restclient 사용

그래서 이걸 살펴 보겠습니다. 사용자가 파일을 내 레일 앱에 게시합니다. 내 컨트롤러에서 params [: file] 파일을받습니다. 그런 다음 RestClient를 사용하여 params [: file]를 Panda로 전달하려고합니다.

내가받는 오류는 팬더 서버에 있습니다. 스택 추적의 파일 param도 문자열에 있다는 것을 알았습니다 (팬더가 더 나은 스택 추적을위한 문자열로 바뀌는 것으로 가정합니다).

~ Started request handling: Wed Aug 12 18:05:15 +0000 2009 
~ Params: {"format"=>"html", "multipart"=>"true", "account_key"=>"SECURE_KEY", "action"=>"upload", "id"=>"SECURE_ID", "controller"=>"videos", "file"=>"#<File:0xcf02ca4>"} 
~ 9bfb1750-6998-012c-4509-12313900b0f6: (500 returned to client) InternalServerErrorcan't convert nil into String 
/var/local/www/panda/app/models/video.rb:246:in `extname' 
/var/local/www/panda/app/models/video.rb:246:in `initial_processing' 
/var/local/www/panda/app/controllers/videos.rb:79:in `upload' 
+0

이 문제를 어떻게 파악할 수 있습니까? –

답변

1

레일즈에서 CGI 스타일 업로드 매개 변수를 restclient에 실제로 전달할 수 있는지 의심 스럽습니다.

레일스의 일반적인 업로드에는 게시 된 리소스 (원래 파일 이름 등)에 속하지 않는 추가 속성이 있으며 레일스 업로드에는 실제 파일 데이터가있는 IO가 들어 있습니다. 또한 Rails의 파일 업로드 객체는 Tempfile 핸들 일 수도 있고 업로드 크기에 따라 StringIO 일 수도 있습니다.

rest-client가 제대로 처리 할 수 ​​있도록 업로드 파일을 "다시 패키지하는"것이 필요하고 재 패키징되고 되감기 된 Tempfile 개체가 restclient로 전달됩니다. 어쩌면 전체 params [: 파일] 대신 업로드 객체 자체를 선택하는 것만으로도 벗어날 수 있습니다

0

rest-client 님이 파일을 게시하는 데 문제가있는 것 같습니다. 재갈과 같은 게시 방법을 확인하십시오. 이 질문에 다중 폼 데이터를 게시 예

많은 : 당신의 위해 RESTClient 조치가 먼저 로컬에 저장할 수 있습니다 Ruby: How to post a file via HTTP as multipart/form-data?

1

확인합니다. 작업이 로컬에서 저장할 수없는 경우 문제 해결 중에 어디에서 볼지 더 잘 알 수 있습니다.

관련 문제