0

我需要从 HTML 表单中获取一个 .csv 文件并解析所有数据。

现在,我在 ruby​​ 脚本中使用 CSV gem 来解析本地文件并使用以下代码将其发布到 Pardot 表单处理程序:

require 'net/http'
require 'uri'
require 'csv'

uri = URI('<form handler url>')

CSV.foreach("<csv file location>", :headers => :first_row) do |row|
  res = Net::HTTP.post_form(uri,    'city' => row['city'],
                                'state' => row['state'],
                                'zip' => row['zip'],
                                'country' => row['country'],
                                'phone' => row['phone'],
                                'fax' => row['fax'],
                                'website' => row['website'],
                                'first_name' => row['first_name'],
                                'last_name' => row['last_name'],
                                'job_title' => row['job_title'],
                                'Company' => row['Company'],
                                'leadtype' => row['leadtype'],
                                'tradeshow_attended' => row['tradeshow_attended'],
                                'industry' => row['industry'],
                                'email' => row['email'],
                                'boothsize' => row['boothsize'],
                                'company' => row['company'],
                                'source' => row['source'],
                                'address_one' => row['address_one'],
                                'address_two' => row['address_two']
                                )
end

现在我创建了一个带有简单表单的 Sinatra 站点,该表单具有 url 的文本输入和 csv 文件的文件上传。

我想要做的是将 CSV 文件的数据拉到上面的脚本中。

这是我的表格:

<form action="" enctype="multipart/form-data" method="post">
                <p>
                    <label>Form Handler URL</label><input name="url" type="text"/>
                </p>
                <p>
                    <label>Please specify a file</label>
                    <input type="file" name="datafile">
                </p>
                <div>
                    <input type="submit" value="Submit">
                </div>
            </form>

我可以使用获取文件信息

params[:datafile]

如何获取通过此表单上传的文件的文本? 该文件不会保存在服务器上。

4

1 回答 1

3

碰巧该文件已经保存在服务器上(尽管作为临时文件对象保存在临时文件中)。您可以通过:tempfileparams-hash 访问它:

content = params[:datafile][:tempfile].read
于 2012-07-26T15:36:38.117 回答