2010-09-03 54 views
1

我有一个系统,用户上传文件,我必须读取文件并在窗体上显示它的内容而不存储它无论是在服务器端还是在数据库中访问上传的文件,而不实际存储在数据库或服务器上 - Ruby on Rails

+0

如果用户上传了一个文件,它已经存储在服务器上。太晚了!你的意思是你不想永久存储它吗? – 2010-09-03 14:27:56

+0

它存储在哪里?我需要在表单上显示文件的内容。我怎样才能访问它? – Rohit 2010-09-03 14:29:09

+0

是的,你说得对,我不想存储它。 – Rohit 2010-09-03 14:29:57

回答

1

当文件上传时,Rails会自动读取它并将其作为Tempfile的一个实例,因此它已存储,它不会永久存储在系统中。

您可以使用正常params[:field_name]语法,如果该文件是任何其他字段访问该文件(不要忘记设置形式的content-typemultipart/form-data - 即

form_for @mything, :html => {:multipart => true})

,你会得到tempfile可以像其他任何文件一样读取

Rails(或许也许我不是100%最新版本的机架)决定是否这样做或不根据附件部分上传的内容包含的mulitpart/form-data元素文件。

如果您需要阻止此存储的发生,则可能会重写某些内容。然而,通常的做法是只使用该文件,然后让Ruby处理临时文件。

+0

通常临时文件保存到文件系统,但立即删除它,所以它不会出现在目录列表中,所以它不会持久。文件只有在文件句柄关闭时才会被移除,它们仍然存在,所以在这种情况下它会一直存在,直到完成。 – tadman 2010-09-03 15:09:49

相关问题