RoR:检查上传的文件

我需要在上传文件保存到文件系统之前检查它们的位。 PHP的文档有一个很好的页面,告诉我我可以使用哪些属性( http://us3.php.net/manual/en/features.file-upload.post-method.php ),但我可以’找到类似于Ruby和/或Rails的东西。

我也尝试记录上传的JSON格式的字符串,但这只是给我一个冗余的UTF-8错误。 我想不出任何其他的尝试。

任何人都可以提供任何见解或指向正确的地方吗?

谢谢。

更新:我在OS X(Leopard)上运行Apache 2.2.11,以防Peter正确(见下文)。

更新:如果有帮助,我的输入参数记录为"upload"=># 。 我只是不确定如何访问它以获得它的“部件”。

据我所知,在读取上传之前,没有物理文件。 这与derfred的回复是一致的。 唯一可以访问的元数据是:

 uploaded_file.content_type # the uploaded file's MIME type uploaded_file.original_path # which is really just the name of the file 

此外,upload_file上还有一个read方法,允许访问文件的内容,并且可能会写入永久文件系统。

我注意到的其他一些事情是Ruby提供检查文件的MIME类型的唯一方法是在上传文件的content_type属性中。 一旦文件在文件系统上,就不再有任何方式来访问或确定MIME类型。

我认为这取决于您使用的Web服务器。 我记得有mongrel,apache和nginx的不同领域。

AFAIK Rails和各种app服务器完全抽象了上传部分。 然而,这里是对该主题的全面讨论: http : //www.jedi.be/blog/2009/04/10/rails-and-large-large-file-uploads-looking-at-the-alternatives/

这只是一个File对象,您可以通过以下方式复制:

 File.open("some_file") 

/tmp/RackMultipart.64239.1只是一个文件名。

如果要从控制器中查看/输出其内容:

  puts params[:upload].read