Bash 使用curl发布数据

Bash 使用curl发布数据,bash,curl,Bash,Curl,这里是Bash n00b。。我正在发布一个使用curl编码的b64文件: $ cat file.txt | openssl base64 | curl --data @- myhost.com/api 效果很好。我在服务器端拆分键/值,整个消息进入键,但这没关系,我将其解析并转换为ascii等。。在服务器上 如何将其他键/值附加到帖子?类似于 $ cat file.txt | openssl base64 | PREPEND "key=value1&key2&value2&am

这里是Bash n00b。。我正在发布一个使用curl编码的b64文件:

$ cat file.txt | openssl base64 | curl --data @- myhost.com/api
效果很好。我在服务器端拆分键/值,整个消息进入键,但这没关系,我将其解析并转换为ascii等。。在服务器上

如何将其他键/值附加到帖子?类似于

$ cat file.txt | openssl base64 | PREPEND "key=value1&key2&value2&btext=" | curl --data @- myhost.com/api

您可以在子shell中创建要curl的所有输入,如下所示:

(echo -n "key=value1&key2=value2&btext="; openssl base64 < file.txt) | curl --data @- myhost.com/api
(echo-n“key=value1&key2=value2&btext=“;opensslbase64

这将依次执行
echo
openssl
,并将串联输出传递给
curl

您可以在子shell中创建要curl的所有输入,如下所示:

(echo -n "key=value1&key2=value2&btext="; openssl base64 < file.txt) | curl --data @- myhost.com/api
(echo-n“key=value1&key2=value2&btext=“;opensslbase64

这将依次执行
echo
openssl
,并将串联输出传递到
curl

而不是@-,您可以使用-F来发布预加键和base64文本

curl -F key=value1 -F key2=value2 -F btext=$(openssl base64 < file.txt | tr -d "\n") myhost.com/api
curl-F key=value1-F key=value2-F btext=$(openssl base64

在我的测试中,除非删除换行符,否则base64将无法正确发送,并且-F和@-都不适用于特别大的文件(>~50kb?)。

可以使用-F来发布预加键和base64文本,而不是@-

curl -F key=value1 -F key2=value2 -F btext=$(openssl base64 < file.txt | tr -d "\n") myhost.com/api
curl-F key=value1-F key=value2-F btext=$(openssl base64

在我的测试中,除非您删除换行符,否则base64将无法正确发送,并且-F和@都不能用于特别大的文件(>~50kb?)。

可能重复的gays/gals-在对其进行复制之前。。这是一个Bash问题,不是Curl问题,也不是关于如何在Curl中发布的基本问题,这是一篇被引用的文章,在另一篇文章中没有得到回答。可能是男生/女生的重复-在你重复之前。。这是一个Bash问题,不是Curl问题,也不是一个关于如何在Curl中发布的基本问题,这是一篇被引用的文章,您可以使用
echo-n
来阻止
btext=
和base64数据之间的换行。您可以使用
echo-n
来阻止
btext=
和base64数据之间的换行。您能给出一个描述吗?您的答案目前不完整。@-指Sean答案中的用法(将btext管道化为| curl--data@-而不是使用$(子shell)写入)。>~50kb的限制是我假设的bash命令vel-alii的最大大小。你能描述一下吗?您的答案目前不完整。@-指Sean答案中的用法(将btext管道化为| curl--data@-而不是使用$(子shell)写入)。>~50kb限制是我假设的bash命令vel alii的最大大小。