File 使用curl从管道发布文件

File 使用curl从管道发布文件,file,curl,post,File,Curl,Post,如何从管道中获取输出并使用curl将其作为文件发布 例如,以下工作 curl-F'file=@data/test.csv'-F'filename=test.csv'https://mydomain@apikey=secret 我想从管道中获取文件内容,但我不太清楚如何将其指定为文件输入。我的第一个猜测是-F'file=@-',但这并不完全正确 cat data/test.csv | curl-F'file=@-'-F'filename=test.csv'https://mydomain@apik

如何从管道中获取输出并使用curl将其作为文件发布

例如,以下工作

curl-F'file=@data/test.csv'-F'filename=test.csv'https://mydomain@apikey=secret

我想从管道中获取文件内容,但我不太清楚如何将其指定为文件输入。我的第一个猜测是
-F'file=@-'
,但这并不完全正确

cat data/test.csv | curl-F'file=@-'-F'filename=test.csv'https://mydomain@apikey=secret

(这里,
cat
只是一个更复杂的事件序列的替代品,可以获得数据)

更新 以下工作:

cat test/data/test.csv  | curl -XPOST  -H 'Content-Type:multipart/form-data' --form 'file=@-;filename=test.csv' $url

如果将
--trace ascii-
添加到命令行,您将看到curl在默认情况下已经使用了该
内容类型(并且
-XPOST
也没有帮助)。而是您的固定
-F
选项起了作用

“不完全正确”是怎么回事?@DanielStenberg服务器抱怨
req.file
不存在(Node/Express)。黑客进一步添加参数
-XPOST-H'Content Type:multipart/form data'
似乎将数据附加为服务器预期的数据如果您使用
--trace ascii-
您将看到curl默认情况下已经使用了该内容类型(并且
-XPOST
也没有帮助)。“这倒是你的固定-F选项起到了作用。”丹尼尔斯滕伯格非常有帮助。请将您的评论作为答案发布,以便我可以这样标记。