首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Rails POST Content-type = image/jpeg

Rails POST Content-type = image/jpeg
EN

Stack Overflow用户
提问于 2011-04-20 16:25:56
回答 1查看 1.8K关注 0票数 2

我有一个轴相机,它可以将数据发送到我给出的地址。我希望它能将数据发送到rails应用程序,但我还没有找到任何这样做的示例。我需要处理的唯一信息是post请求的头。我拿出了一些东西,但这是我得到的:

代码语言:javascript
复制
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应用程序的一部分:

代码语言:javascript
复制
#!/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中尝试了以下内容:

代码语言:javascript
复制
imagefile = File.new("test_file.jpg","w+")
imagefile << STDIN.read
imagefile.close

但它并没有起作用。文件test_file.jpg为空。

我有什么使命吗?有人知道如何将请求数据保存为文件吗?

有没有人知道有什么好的库允许从Axis网络摄像头上传http?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-06-27 14:37:37

Rails不使用CGI接口和stdin/stdout等。提交的请求的主体可以在request.body中找到,因此在上面的代码中将STDIN.read更改为request.body.read就可以了。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5727507

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档