【问题标题】:curl: argument list too longcurl:参数列表太长
【发布时间】:2019-06-03 02:03:26
【问题描述】:

我想通过带有 curl post 的 Sparkpost API 发送附有 pdf 文件的电子邮件。

插入我使用的 pdf(我的 test.pdf 约为 200KB)

"data":"'$(cat test.pdf} | base64 --wrap=0)'"

但不知何故,这并不能显示以下错误:

/usr/bin/curl: Die Argumentliste ist zu lang (original)
/usr/bin/curl: Argument list is too long

编辑: 卷曲命令

curl -X POST https://api.eu.sparkpost.com/api/v1/transmissions -H 'Authorization: <APIKEY>' -H 'Content-Type: application/json' -d '{
   "options":{
      "open_tracking":false,
      "click_tracking":false,
      "inline_css":false
   },
   "recipients":[
      {
         "address":{
            "email":"user@domain.tld",
            "name":"user"
         }
      }
   ],
   "content":{
      "from":{
         "name":"sender",
         "email":"sender@domain.tld"
      },
      "reply_to":"replyto@domain.tld",
      "subject":"subject",
      "text":"textbody",
      "attachments":[
         {
            "name":"attachmentname.pdf",
            "type":"application/pdf",
            "data":"'$(cat test.pdf | base64 --wrap=0)'"
         }
      ]
   }
}'

【问题讨论】:

  • 您可以发布您正在使用的 cURL 命令吗?
  • @Marcus 添加了我的 curl 命令

标签: bash curl sparkpost


【解决方案1】:

这是因为您试图在命令行上传递全部 base64 内容。 curl 能够从文件加载数据到 POST,我建议这样做。更多信息可以在the man page找到,但基本格式是这样的:

curl -X POST -d @filename.txt https://website.com/path

【讨论】:

  • 总结一下为什么直接在您的答案中使用@ 会很好,因为它是唯一没有明确使用指示的缺失部分。
【解决方案2】:

根据 curl 手册,-F 选项允许您为 base64 编码文件,但将输出限制为 76 个字符。 前任: -F '=@localfile;encoder=base64'

【讨论】:

  • 你能给出完整的例子吗?
  • 是的!考虑到我在 /home/centos 并且发送 names.txt 文件将使用以下命令: curl -X POST 127.0.0.1:1880/test '-F' = @ localfile; encoder = base64 ' 但是,如果文件编码超过 76 个字符,文件就会损坏。
猜你喜欢
  • 2021-10-28
  • 2019-02-22
  • 1970-01-01
  • 2017-11-30
  • 2020-05-09
  • 2014-05-21
  • 2015-04-04
  • 2021-10-26
  • 2014-04-18
相关资源
最近更新 更多