【问题标题】:upload CSV file via curl to Ruby on Rails backend通过 curl 将 CSV 文件上传到 Ruby on Rails 后端
【发布时间】:2018-04-05 17:28:51
【问题描述】:

我正在尝试通过curl 将文件发送到控制器操作。 这是我尝试过的:

curl -F "file=wb.csv" http://localhost:3000/api/v1/process_data?api_key=Dp9Kv7j1y-FYytd-tYsAsSNic3ox

但是,在我的控制器中,我检查了发送的参数的内容,它只返回文件名 wb.csv 而不是 csv 附件:

{"file"=>"wb.csv", "api_key"=>"Dp9Kv7j1y-FYytd-tYsAsSNic3ox", "format"=>"json", "action"=>"import_csv", "controller"=>"api/v1/growth_utils"}

我想实现与从 UI 上的表单发帖一样的效果:

<%= form_tag import_csv_admin_growths_path, multipart: true do %>
  <%= file_field_tag :file %>
  <%= submit_tag "Import" %>
<%end%>

控制器动作中有哪些参数:

{"file"=>
      #<ActionDispatch::Http::UploadedFile:0x007faa0543b7d0
       @content_type="text/csv",
       @headers="Content-Disposition: form-data; name=\"file\"; filename=\"wb.csv\"\r\nContent-Type: text/csv\r\n",
       @original_filename="wb.csv",
       @tempfile=#<File:/var/folders/zq/kk1mrjjn52zdf8120c4z4tb80000gn/T/RackMultipart20180405-21787-17k4lup>>,
     "commit"=>"Import",
     "format"=>"csv",
     "action"=>"import_csv",
     "controller"=>"admin/growths"}

【问题讨论】:

    标签: ruby-on-rails csv curl


    【解决方案1】:

    在你的卷曲中你做错了。您将文件名作为参数而不是文件本身发送

    curl -F import_file=@wb.csv http://localhost:3000/api/v1/process_data?api_key=Dp9Kv7j1y-FYytd-tYsAsSNic3ox.
    

    试试这个。这与您的第二个输出相同,这就是 rails 处理文件上传的方式。

    【讨论】:

    • 那行得通。谢谢。问题是在file=@wb.csv ?\ 周围引用
    猜你喜欢
    • 1970-01-01
    • 2012-12-03
    • 2017-10-25
    • 2016-03-24
    • 2011-10-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多