【问题标题】:CURL fails to send post data over 1024 bytes via command lineCURL 无法通过命令行发送超过 1024 字节的 post 数据
【发布时间】:2009-10-09 21:08:27
【问题描述】:

我正在尝试通过在 shell 脚本中使用 curl 将大型 XML 文件发布到 Web 地址。我正在使用 curl 中的“-F”选项发布数据。每当我发布大于 1024 字节的文件时,该文件就会被截断,并且只发送前 1024 个字节。我尝试按照 PHP Curl 的另一种解决方案中的建议更改“Expect:”标头,但它不起作用。

这是我正在使用的命令行:

curl -F "xml=</fileoutput.xml" http://servername/page.html

正如我之前所说,我都尝试过 -H“期望:” -H "期望:100-继续"

都不行。请帮忙!

【问题讨论】:

  • 1024 对我来说似乎是 GET 限制

标签: xml linux unix curl shell


【解决方案1】:

根据手册页,-F 选项确实会执行 POST,因此它看起来不像是 GET 问题。手册页还说要在文件前面加上 @ 以将文件用作内容,所以也许命令应该是

curl -F xml=@some_file http://servername/page.html

【讨论】:

  • 非常感谢!即使我的例子坏了(我修复了它并放置了代码标签以便它正确显示)你明白了!
【解决方案2】:

要发布文件,您必须在 URL 前使用 @。我认为 Troubadour 已经提到了这一点,但它需要用引号括起来:

 curl -F "xml=@http://servername/page.xml"

另请注意,我将其更改为 .xml,正如您所说您要发布的是大型 XML 文件,而不是大型 HTML 文件。

【讨论】:

  • 我接受了 Troubadour 的回答,因为我的示例中确实包含引号,但由于我在询问时没有将其放入代码块中,因此未显示。感谢您的帮助!
【解决方案3】:

网址本身有这个限制吗?您是否尝试过通过网络浏览器手动发布相同的文件?

【讨论】:

  • 好主意!我刚刚对此进行了测试,并且能够通过 Firefox 直接向其发布大于 1k 的大文件。
【解决方案4】:

我认为您需要使用 -d 而不是 -f ?

-d 似乎发布了数据。正如 Sab 指出的那样,GET 的最大大小非常小,您必须发布文件,并且为此您必须使用 -d 而不是 -f。

Look here.

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-04-02
    • 1970-01-01
    • 2014-06-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-19
    相关资源
    最近更新 更多