使用Postman上传到rails应用程序中的POST路径(仅限api),但不确定如何将其解析为rails应用程序。
我们有一个模型可以使用导入方法导入表,该方法采用CSV并循环以将其添加到数据库中。
然而不知道如何使用params []将文件通过控制器中的文件传递,因为我们将它作为二进制文件发布(我们已经在Postman中尝试了表单方式而且没有太多运气)。
我在控制器中
file = CSV.read(params[:file].path)
然而,这会产生一个我不太了解如何输入模型的数组(原始CSV文件中也有标题)
答案 0 :(得分:0)
如何将csv上传到S3或Dropbox,然后将网址发布到服务器,服务器读取该CSV并导入到数据库。
以下是从网址中读取CSV的示例:
应用/服务/ process_csv.rb 强>
require 'csv'
require 'net/http'
class ProcessCsv
def initialize(csv_url)
@csv_url = csv_url
end
def proesss
uri = URI(@csv_url)
csv_text = Net::HTTP.get(uri)
csv = CSV.parse(csv_text, headers: true)
csv.each do |row|
# Process row here and import to DB here
end
end
end
然后您可以在控制器中使用ProcessCsv
,控制器的参数只是CSV文件的URL,而不是CSV数据!
答案 1 :(得分:0)
您可以使用foreach解析CSV
。例如,下面给出的内容。
CSV.foreach(params[:file].path, headers: false) do |row|
Model.create(name: row[0], email: row[1])
end