使用 CURL 批量发布文件到 pastebin

使用 CURL 批量发布文件到 pastebin

我正尝试使用 Windows 10 计算机上的批处理 (.bat) 文件 CURL.exe 将日志文件上传到 pastebin。

以下命令作品

curl -X POST -d "api_dev_key=MY_DEV_KEY" -d "api_paste_code=this is a the text to send to pastebin" -d "api_option=paste" "https://pastebin.com/api/api_post.php" -d "api_expire_date=10M"

然而,它只允许上传单线,而我想上传整个文件。
我试过:

curl -X POST -d "api_dev_key=MY_DEV_KEY" -T "logfile.txt" -d "api_option=paste" "https://pastebin.com/api/api_post.php"

但是 curl 对此的回应是“ Bad API request, invalid api_dev_key”。

我发现了很多选择,例如将命令行输出粘贴到粘贴箱服务的简单方法是什么?使用 CURL 发布文件内容, 和Bash 脚本用于将文件和数据上传到 Pastebin.com它允许你将文件内容上传到 pastebin 或将命令作为帖子发送到 curl在 unix/bash 上,但这些工作都不能批量完成,因为处理管道存在差异。

从批处理文件中将日志文件发布到 pastebin 的正确方法是什么?

答案1

您正在尝试发出多部分 POST 请求(正如 API 所要求的那样),但该-T选项实际上告诉 curl 使用请求。PUT 仅用于上传单个文件,不用于其他用途;它不允许多个字段。(这是 POST 的用途。)将两者混合使用是没有意义的。

因为你正在使用表单,所以文件的内容必须作为表单字段提交。字段名称为,可以使用 curl 的或运算api_paste_code符从文件加载值:<@

-d "api_paste_code=<logfile.txt"

在这种情况下,您很可能应该使用-F而不是-d到处使用,因为前者会生成一个 MIME 多部分消息,可以更好地支持大文件(尤其是二进制文件),而后者则尝试将所有内容放在单个 urlencoded 字符串中。

-F "api_dev_key=MY_DEV_KEY" -F "api_paste_code=<logfile.txt" -F "api_option=paste"

(通常,API 服务应该接受两者,尽管只有一种可能才-d有效。)

相关内容