php curl获取的数据长度太长,PHP CURL:手动设置内容长度标题

假设我使用PHP,CURL上传文件:

$postData = array();

$postData['file_name'] = "test.txt";

$postData['submit'] = "UPLOAD";

$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, $url );

curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);

curl_setopt($ch, CURLOPT_POST, 1 );

curl_setopt($ch, CURLOPT_POSTFIELDS, $postData );

现在假设我必须手动设置内容长度标头.

$headers=array(

"POST /rest/objects HTTP/1.1",

'accept: */*',

"content-length: 0" //instead of 0, how could I get the length of the body from curl?

)

curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); //set headers

$response = curl_exec($ch);

我该如何测量身体的大小? (只是将filesize指定为内容长度似乎不起作用)

在另一个示例中,如果正文包含的数据不是实际文件. (由postfields手动设置)在那种情况下,我如何获得身体的内容长度?

感谢任何关于此的灯光,这似乎是一个棘手的问题.

解决方法:

要获得帖子正文的长度,请尝试将字段格式化为GET样式字符串(也称为param1 = value1& param2 = value2),然后将该字符串设置为CURL_setopt的CURL_POSTFIELDS.不必提供阵列.您可以简单地使用strlen()来获取用于内容长度标头的值.

如果您正在发布除其他字段之外的文件(或多个文件),就像您在上面的示例中所示,您必须将文件的值提供为@ / path / to / file,然后以字节为单位获取文件大小并将其添加到总内容长度.

因此,对于上面的示例,假设文件test.txt位于服务器的/ test目录中,post值字符串将是file_name = @ / test / text.txt& submit = UPLOAD.在将其指定为curl post值之前,您必须对此字符串进行url_encode.要获取内容长度,您将获得该字符串的长度(post url-encoding)并将其添加到/test/test.txt的文件大小中.

标签:php,http,curl

来源: https://codeday.me/bug/20191006/1862577.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值