【问题标题】:run cURL to upload a file without header运行 cURL 以上传没有标题的文件
【发布时间】:2020-02-02 17:45:24
【问题描述】:

我的目标是将给定的文件上传到 service_now,并在 shell 脚本中使用以下代码来执行此操作。声明了 $ 值,其中 SERVICENOW_API_URL=https://dev80516.service-now.com/api/now/attachment/file 和 table_name 是 sys_attachment。

$ curl $SERVICENOW_API_URL?table_name=$SERVICENOW_ATTACHMENT_TABLE_NAME\&table_sys_id=$SERVICENOW_ATTACHMENT_TABLE_SYS_ID\&file_name=$UPLOAD_FILE_NAME --request POST --header \"Accept:application/json\" --user $SERVICENOW_USER_NAME:$SERVICENOW_PASSWORD --header \"Content-Type\:application/json\" -F "uploadFile=@./blank.txt"
  1. 每当我上传文件时,上传的文件都会添加以下类型的标题。请更改我的命令以上传不带此标头的文件。
--------------------------565a353520eb07b1
Content-Disposition: form-data; name="uploadFile"; filename="blank.txt"
Content-Type: text/plain


--------------------------565a353520eb07b1--
  1. 此外,当压缩文件上传到 service_now 然后从 serviceNow 下载回来时,无法提取/解压缩文件。

【问题讨论】:

  • 你可能根本不想使用-F,而是一个普通的--data-binary @filename...
  • @DanielStenberg 但它抛出错误为 {"error":{"message":"Attachment is empty","detail":null},"status":"failure"}
  • 它是否需要“上传”?我会回去检查请求应该是什么样子。如果您能弄清楚并告诉我们,我们可以告诉您使用什么 curl 命令行!
  • 在我的情况下是的,我们需要具有两个表单字段的多部分表单数据,一个实际上是一个文件,另一个是一个多行文本区域。碰巧我在单独的文件中有文本区域的内容。不幸的是,如果我同时提交@,那么标头会混淆服务器,它认为我正在发送两个文件,而不仅仅是一个文件和一堆文本

标签: bash shell curl servicenow


【解决方案1】:

哇,似乎带有反引号的命令替换与文本文件完美配合

 -F "uploadFile=`cat blank.txt`"

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-08-08
    • 2017-08-01
    • 2014-12-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-18
    • 1970-01-01
    相关资源
    最近更新 更多