curl不会使用-d发送PUT上的所有内容

时间:2017-03-24 14:45:47

标签: http curl

我遇到问题,当使用tar -cz folder | curl -X PUT -d @- http://example.com/api/take/file

上传时,curl不会上传我的所有数据

以下命令不起作用:
tar -cz folder | curl -X PUT -T - http://example.com/api/take/file

以下命令有效:
public Startup(IHostingEnvironment env) { var builder = new ConfigurationBuilder() .SetBasePath(env.ContentRootPath) .AddJsonFile("appsettings.json", optional: true, reloadOnChange: true) .AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: true) .AddEnvironmentVariables(); Configuration = builder.Build(); Log.Logger = new LoggerConfiguration() .MinimumLevel.Debug() .WriteTo.RollingFile("C:/LogFiles/log-{Date}.txt") .CreateLogger(); }

有人知道这种行为的原因是什么。

1 个答案:

答案 0 :(得分:0)

好的,我在curl的文档中找到了根本原因:

-d

因此,当您只使用--data-binary时,数据将以ascii格式发送。 根据文档,二进制数据应与tar -cz folder | curl -X PUT --data-binary @- http://example.com/api/take/file一起发送,实际上以下命令的工作原理为 curl -X DELETE -d '{"ruleid": "${value}"}' 'http://192.168.0.12:8080/wm/firewall/rules/json'