gpt4 book ai didi

ruby-on-rails - 在 Rails 中上传文件给出 String 文件名而不是 File 或 StringIO 对象

转载 作者:行者123 更新时间:2023-12-04 00:36:08 25 4
gpt4 key购买 nike

Rails 3,JRuby 1.6.7.2

我一直在尝试一些“基本”的东西,只是通过表单上传一个文本文件以在我的应用程序中进行处理。我看到的问题是,我得到的不是 StringIO 或 File,而是文件名的字符串。

这是表单代码

= form_tag(:controller => "api/#{CURRENT_API_VERSION}/api", :action => 'file', :method=> :post, :multipart => true) do
= label_tag "file"
= file_field_tag "upload[file]"
= submit_tag 'Analyze!'

而 Controller 代码只是给我@upload 作为包含文件名的字符串。
def file
@upload = params[:upload][:file]
render :template => 'api/file.html.haml'
end

在 Controller 中运行调试器给了我@upload.class = String,它不响应任何文件或 StringIO 方法,例如读取。

最佳答案

在这里找到了答案。事实证明我只是搞砸了 form_tag 方法调用。您需要将用于“url_for”的选项和其他选项分开,特别是多部分选项。

所以表格的正确代码是:

= form_tag({:controller => "api/#{CURRENT_API_VERSION}/api", :action => 'file', :method=> :post}, {:multipart => true}) do
= label_tag "file"
= file_field_tag "upload[file]"
= submit_tag 'Analyze!'

感谢 Rob Biedenharn 五年前在 ruby​​-forum 上回答这个问题!
http://www.ruby-forum.com/topic/125637

关于ruby-on-rails - 在 Rails 中上传文件给出 String 文件名而不是 File 或 StringIO 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11895829/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com