首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在我的API中上传CSV文件的内容,使用CSV的头部作为请求头部

如何在我的API中上传CSV文件的内容,使用CSV的头部作为请求头部
EN

Stack Overflow用户
提问于 2019-10-21 01:13:53
回答 2查看 51关注 0票数 0

我知道如何通过在模型中使用has_one_attached将文件附加到我的请求中来上传文件。

但我的目标是上传CSV文件的内容,而不是文件本身。( csv文件也有一个我想使用的头文件)我如何设置我的控制器和型号来启用它?

一些背景信息:我正在使用ETL过程来转换CSV文件,并希望在我的API中上传这些CSV文件的内容。将有许多大文件上传,我希望避免对文件进行手动更改。

不过,对于这个问题,一个小示例应该就足够了:

testfile1.csv

代码语言:javascript
运行
复制
name;age;gender
max;23,m
lisa;12;f
gustavo;69;m
bernd;4;d

我见过CSV文件的这种方法,但我不知道如何实现它以供使用

代码语言:javascript
运行
复制
CSV.foreach(params[:file].path, headers: true) do |row|
  Model.create(name: row[0], age: row[1], gender: row[2])
end

"Model.create“是否创建了一个新模型,这样我就不需要在自己的模型中输入姓名、年龄和性别,或者它是如何工作的?我要在服务中使用它吗?params:file是访问允许的属性的方式吗?

这是我在这里的第一个问题,而且我相当缺乏经验,我希望我已经包括了所有需要的东西。提前谢谢你

EN

回答 2

Stack Overflow用户

发布于 2019-10-21 21:07:27

foreach方法将允许您迭代有问题的csv文件。是的,params[:file]允许您访问该文件(如果该文件来自表单,则应该是控制器上的一个允许参数)。根据示例,Model类中的对象将具有属性- nameagegenderModel.create将使用提供的参数创建一个对象,并将其写入底层数据库。row在这里是一个迭代变量。row将遍历csv文件的所有行。仅当提供headers: true时(如此处所示),才会读取头文件。

票数 0
EN

Stack Overflow用户

发布于 2019-10-23 23:41:22

因此,在尝试了一些之后,我为那些感兴趣的人找到了一个解决方案,它可能不是最干净的,但它似乎对我很有效。"Testfilemodel“是我保存内容的另一个模型。我认为"filename“是可以删除的。

代码语言:javascript
运行
复制
class Api::FileuploadsController < ApplicationController
    before_action :set_fileupload, only: [:show, :update, :destroy]
    require 'csv'
    def create
        @fileupload = csvmethod
    end

    private

    def file_params
        params.require(:fileupload).permit(:filename, :csvfile)
    end

    def csvmethod
        CSV.foreach(file_params[:csvfile].path, headers: true) do |row|
            Testfilemodel.create(name: row[0], age: row[1], gender: row[2])
        end
    end
    def set_fileupload
        @fileupload = Fileupload.find(params[:id])
    end
end

在"Testfilemodel“模型中,我只有基本的index和show方法来显示内容。如果其他人也有同样的问题,希望这对你有所帮助。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58475376

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档