早在 2023 年 9 月,我们就用一个相当先进且灵活的新变量系统扩展了curl 命令行工具。使用它,用户可以在以以前不可能的方式构建curl命令行时以强大的方式使用文件、环境变量等——几乎所有现有的命令行选项。
在此之前,curl 命令行已经非常强大,但这些新变量无疑又提升了几个档次。
2025 年 2 月到来
在即将发布的curl 8.12.0 版本中,我们进一步扩展了此变量支持。从现在开始,您可以分配一个变量来保存部分文件的内容。将给定文件中的字节范围获取到变量中,并在命令行中使用该变量,而不是使用整个文件。
您可以获取前几个字节并用作用户名,您可以获取文件中间的一百个字节并发布它或执行无数其他操作。
字节范围
当您分配变量时,您可以通过将;[nM]
附加到文件名来要求curl 从文件中读取字节范围而不是整个字节范围。其中 N 和 M 是文件中第一个和最后一个字节的偏移量,0 是第一个字节。如果省略第二个数字,则表示直到文件末尾。
例如,从名为Secret的文件中获取前 32 个字节并将其设置为daniel的密码:
卷曲--变量“pwd@secret;[0-31]”\
--expand-user 丹尼尔: \
https://example.com/
跳过名为localfile 的文件中的前 1000 个字节,并在 POST 中发送其余部分:
卷曲-变量“上传@本地文件;[1000-]”\
--expand-post '' \
https://example.com/
具有功能
当然,您也可以将字节偏移与标准扩展函数结合起来。例如,从名为random 的文件中获取前一百个字节,并以 POST 方式将其以 Base64 编码发送:
卷曲-变量“binary@random;[0-99]”\
--expand-post '' \
https://example.com/
我希望你会喜欢它。
更新
在他的文章首次发布后,我们讨论了此功能的确切语法,并决定对其进行一些调整,以减少旧的 curl 版本在尝试新的命令行选项时被欺骗的可能性。一旦新语法落地,我将相应地更新这篇博文。
原文: https://daniel.haxx.se/blog/2024/12/30/curl-with-partial-files/