【发布时间】: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"
- 每当我上传文件时,上传的文件都会添加以下类型的标题。请更改我的命令以上传不带此标头的文件。
--------------------------565a353520eb07b1
Content-Disposition: form-data; name="uploadFile"; filename="blank.txt"
Content-Type: text/plain
--------------------------565a353520eb07b1--
- 此外,当压缩文件上传到 service_now 然后从 serviceNow 下载回来时,无法提取/解压缩文件。
【问题讨论】:
-
你可能根本不想使用
-F,而是一个普通的--data-binary @filename... -
@DanielStenberg 但它抛出错误为 {"error":{"message":"Attachment is empty","detail":null},"status":"failure"}
-
它是否需要“上传”?我会回去检查请求应该是什么样子。如果您能弄清楚并告诉我们,我们可以告诉您使用什么 curl 命令行!
-
在我的情况下是的,我们需要具有两个表单字段的多部分表单数据,一个实际上是一个文件,另一个是一个多行文本区域。碰巧我在单独的文件中有文本区域的内容。不幸的是,如果我同时提交
@,那么标头会混淆服务器,它认为我正在发送两个文件,而不仅仅是一个文件和一堆文本
标签: bash shell curl servicenow