我有一个轴相机,它可以将数据发送到我给出的地址。我希望它能将数据发送到rails应用程序,但我还没有找到任何这样做的示例。我需要处理的唯一信息是post请求的头。我拿出了一些东西,但这是我得到的:
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应用程序的一部分:
#!/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;因此,文件名在ENV{'HTTP_CONTENT_DISPOSITION'}中,这在头文件和示例代码中都很清楚。从perl脚本看,图像数据似乎都包含在STDIN中。我已经在rails中尝试了以下内容:
imagefile = File.new("test_file.jpg","w+")
imagefile << STDIN.read
imagefile.close但它并没有起作用。文件test_file.jpg为空。
我有什么使命吗?有人知道如何将请求数据保存为文件吗?
有没有人知道有什么好的库允许从Axis网络摄像头上传http?
发布于 2011-06-27 14:37:37
Rails不使用CGI接口和stdin/stdout等。提交的请求的主体可以在request.body中找到,因此在上面的代码中将STDIN.read更改为request.body.read就可以了。
https://stackoverflow.com/questions/5727507
复制相似问题