PHP CURL: El içerik-uzunluk başlığı ayarı

2 Cevap php

PHP, CURL ile bir dosya upload Say:

$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 );

Şimdi elle içerik-uzunluk başlığı ayarlamak zorunda varsayalım.

$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);

Nasıl vücudun boyutunu ölçmek istiyorsunuz? (Sadece içerik uzunluğu gibi dosya boyutu belirterek çalışmak için görünmüyor)

Başka bir örnekte ne varsa vücudun gerçek bir dosya değildir verileri içerir. Nasıl vücudun içerik uzunluğu alacağını durumda (elle postFields tarafından ayarlanır)?

Teşekkürler Bu konuda herhangi bir ışık döken, zor bir sorun gibi görünüyor.

2 Cevap

Bir sonrası vücut uzunluğu elde etmek için, (aka param1=value1&param2=value2) ardından curl_setopt ile CURL_POSTFIELDS olarak bu dizeyi ayar alanları GET tarzı dize int biçimlendirmeyi deneyin. Bir dizi birlikte olmak zorunda değildir. Siz sadece strlen() değer içerik uzunluğu üstbilgisi için kullanmak almak için kullanabilirsiniz.

Eğer diğer alanlarda ek bir dosya (veya dosyaları) gönderme eğer yukarıdaki örnekte olduğu görüldüğünden, sen @/path/to/file, ardından bayt dosya boyu olsun dosya için değer sağlamak zorunda ve toplam içerik uzunluğu bu ekleyin.

Yani yukarıdaki örnekte için, dosyayı varsayarak test.txt /test dir sizin sunucu olan, sonrası değer dizesi olacaktır file_name=@/test/text.txt&submit=UPLOAD. Sen ZORUNLU url_encode de bu dize, size kıvırmak sonrası değeri olarak atayın önce. Almak için content length Bu dizeyi (post url-kodlama) uzunluğunu almak ve add it to the filesize ve /test/test.txt.

Bu yanlış geliyor. Oluşturulan veri alt başlıkları ve İçerik-Boy da bu alt başlıkları içermesi gerekir içerecektir. Alt başlıklar bir sınır bulunmaktadır beri, bu içerebilir ve bu veriler, tüm bu şey çalışmıyor olabilir (tam istek olacak tam olarak ne olduğunu bilmeden büyüklüğü tarif edilemez.)

Aslında, ben görebiliyorum ne, büyüklüğünü hesaplayabiliriz tek cURL kendisidir. Ama bunu 8-P yapmaz