2011-04-20 20 views
1

我有一臺軸相機,它將數據傳送到我給它的地址。我希望它發佈數據到一個rails應用程序,但我還沒有找到任何如何做到這一點的例子。我必須處理的唯一信息是發佈請求的標題。我拉了幾件事,但這裏是我得到的:Rails POST Content-type = image/jpeg

REQUEST_METHOD = POST 
QUERY_STRING = 
CONTENT_TYPE = image/jpeg 
DOCUMENT_ROOT = /var/www/staging/public 
REQUEST_URI = /camera/1/images? 
SCRIPT_NAME = 
PATH_INFO = /camera/1/images 
HTTP_CONTENT_DISPOSITION = attachment; filename="image09-12-16_21-16-28-90.jpg" 
_ = _ 

據我所知,請求本身包含JPEG圖像。

Axis將以下內容作爲CGI腳本發佈以保存圖像。它的工作原理,但我想這是我的Rails應用程序的一部分:在ENV {「HTTP_CONTENT_DISPOSITION」}

#!/usr/bin/perl -w 
my $upload_dir = "/var/www/cgi-bin/upload/"; 

print "Content-Type: text/plain\r\n\r\n"; 
print "Upload OK\r\n"; 

my $file_name = $ENV{'HTTP_CONTENT_DISPOSITION'}; 
$file_name =~ s/^attachment; filename=\"(.*)\"$/$1/; 

open (IMG_FILE, "> $upload_dir$file_name") or die "can't open >$upload_dir$file_name"; 
binmode(IMG_FILE); 
while (<STDIN>) { 

print IMG_FILE $_; 

} 
chmod 0666, "$upload_dir$file_name"; 

exit 0; 

因此實際文件,這是在頭部和示例代碼都是清晰的。從perl腳本看來,圖像數據全部包含在STDIN中。我已經嘗試了以下在軌道上:

imagefile = File.new("test_file.jpg","w+") 
imagefile << STDIN.read 
imagefile.close 

但它沒有工作。文件test_file.jpg是空的。

有什麼我是使命嗎?有誰知道如何將請求數據保存爲文件?

有誰知道任何允許從Axis網絡攝像頭上傳http的好的庫?

回答

0

Rails不使用CGI接口標準輸入/輸出等提交的請求的主體可以在request.body找到,所以在上面的變化STDIN.readrequest.body.read,你應該罰款。