我需要在上传文件保存到文件系统之前检查它们的位。 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"=>#<File:/tmp/RackMultipart.64239.1>
。我只是不确定如何访问它以获得它的“部分”。
答案 0 :(得分:4)
据我所知,在读取上传之前,没有物理文件。这与derfred的回复是一致的。 可以访问的唯一元数据是:
uploaded_file.content_type # the uploaded file's MIME type
uploaded_file.original_path # which is really just the name of the file
此外,read
上有一个uploaded_file
方法,允许访问文件'内容,并且可能会写入永久文件系统。
我注意到的另一件事是 only 意味着Ruby提供检查文件的MIME类型是在上传文件的这个content_type
属性中。一旦文件在文件系统上,就不再有任何方式来访问或确定MIME类型。
答案 1 :(得分:0)
我认为这取决于您使用的网络服务器。我记得有mongrel,apache和nginx的不同领域。
答案 2 :(得分:0)
AFAIK Rails和各种应用服务器完全抽象了上传部分。但是这里是对该主题的全面讨论: http://www.jedi.be/blog/2009/04/10/rails-and-large-large-file-uploads-looking-at-the-alternatives/
答案 3 :(得分:0)
这只是一个File对象,可以通过以下方式复制:
File.open("some_file")
/tmp/RackMultipart.64239.1 只是一个文件名。
如果要从控制器中查看/输出其内容:
puts params[:upload].read