문제

Multipart 양식에 RestClient를 사용하여 RESTFUL 웹 서비스 (PANDA 비디오 인코딩 서비스)로 데이터를 보냅니다. 그러나 트릭은 내가 RESTCLIENT (Technoweenie Branch)로 전달하는 파일이 사용자가 제출하는 내 형태에서 나온다는 것입니다.

그래서, 이것을 걸어 가자. 사용자는 파일을 내 레일 앱에 게시합니다. 내 컨트롤러에서는 params [: file]에서 파일을 수신합니다. 그런 다음 RestClient를 사용하여 Params [: 파일]을 Panda로 전달하고 싶습니다.

내가 얻는 오류는 Panda 서버에 있습니다. 스택 추적의 파일 파일이 문자열에도 있음을 알았습니다 (팬더가 더 좋은 스택 트레이스의 문자열로 바꾸는 것으로 가정합니다).

 ~ 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'
도움이 되었습니까?

해결책

CGI 스타일 업로드 매개 변수를 레일에서 RESTCLIENT로 전달하고 작동 할 것으로 기대할 수 있습니다.

Rails의 정기적 인 업로드에는 게시 된 리소스에 속하지 않는 일부 추가 속성이 있으며 (원래 파일 이름 등) Rails 업로드에는 실제 파일 데이터가 포함 된 IO가 포함되어 있습니다. 또한 레일의 파일 업로드 오브젝트는 템 파일 핸들 일 수 있으며 업로드 크기에 따라 Stringio 일 수 있습니다.

효과적으로해야 할 일은 Rest-Client에 대한 업로드를 "재 패키지"하여 올바르게 처리하고 재 포장 된 템 파일 객체를 RESTClient로 전달하는 것입니다. 아마도 전체 매개 변수 대신 업로드 객체 자체를 선택하면 도망 갈 수 있습니다 [: file].

다른 팁

RESTCLIENT 동작이 로컬로 먼저 저장할 수 있는지 확인하십시오. 액션이 로컬로 저장할 수 없다면, 당신은 촬영 문제가있는 동안 어디에서 볼 것인지 더 나은 아이디어를 얻게 될 것입니다.

REST-Client의 파일 게시와 관련된 문제인 것 같습니다. Curb와 같은 게시를위한 대체 방법을 확인하십시오.

이 질문에 대한 멀티 파트 양식 데이터를 게시하기위한 많은 예 : Ruby : HTTP를 통해 파일을 멀티 파트/양식 데이터로 게시하는 방법은 무엇입니까?

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top