我正在尝试在 Windows 10 机器上使用 CURL.exe 在批处理 (.bat) 文件中将日志文件上传到 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
。
我发现了许多选项,例如将命令行输出粘贴到 bin 服务的简单方法?,使用 CURL 发布文件的内容,以及将文件和数据上传到 Pastebin.com 的 Bash 脚本,允许您将文件的内容上传到 pastebin 或通过管道命令 curl 作为unix / bash 上的帖子,但这些都不起作用批量处理管道的差异。
从批处理文件中将日志文件发布到 pastebin 的正确方法是什么?
您正在尝试发出多部分 POST 请求(正如 API 所要求的那样),但该
-T
选项实际上告诉 curl 使用PUT请求。PUT 仅用于上传单个文件,仅用于上传;它不允许多个字段。(这就是 POST 的用途。)将两者混合是没有意义的。因此,因为您正在使用表单,所以文件的内容也必须作为表单字段提交。字段名称是
api_paste_code
,并且可以使用 curl<
或@
运算符从文件中加载值:在这种情况下,您很可能应该使用
-F
而不是-d
到处使用,因为前者生成的 MIME 多部分消息更好地支持大文件(尤其是二进制文件),而后者试图将所有内容放在单个 urlencoded 字符串中。(通常 API 服务应该同时接受这两者,当然也有可能只有这两种方法可以
-d
工作。)