PHP ve CURL kullanarak dosya yükleme ile çok boyutlu bir dizi gönderme ile ilgili sorunlar yaşıyorum.
Çok boyutlu bir dizi, örneğin bir:
$post['question'] = 'Are you human?';
$post['answers'] = array('yes', 'no', 'maybe');
$post['file'] = '@/path/to/file';
// Output:
Array(
'question' => Are you human?,
'answers' => Array(
'0' => yes,
'1' => no,
'2' => maybe
),
'file' => @/path/to/file
)
Eğer sadece böyle CURL içinde CURLOPT_POSTFIELDS ile bu yazı için çalışırsanız bu iş olmaz neden bir kaç şey vardır:
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'http://example.com');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $post);
$response = curl_exec($ch);
description CURLOPT_POSTFIELDS tüm resmi PHP Birinci diyor ki:
The full data to post in a HTTP "POST" operation. To post a file, prepend a filename with @ and use the full path. This can either be passed as a urlencoded string like 'para1=val1¶2=val2&...' or as an array with the field name as key and field data as value. If value is an array, the Content-Type header will be set to multipart/form-data.
Eğer doğru postFields Dizinin her türlü geçebilir gibi geliyor? Yanlış. PostFields sadece sayıl olmayan değerleri kabul eder ve çok boyutlu diziler geçen zaman Array to string conversion
hata ile şok olacaktır. Yani, sahip diğer tek seçenek boğması değil çok boyutlu diziler geçmek edebilmek için http_build_query()
sizin dizi için.
Ama .. Eğer PHP sayfasındaki notta okuyabilirsiniz gibi:
Note: Passing an array to CURLOPT_POSTFIELDS will encode the data as multipart/form-data, while passing a URL-encoded string will encode the data as application/x-www-form-urlencoded.
Eğer dosya yükleme başarısız neden postFields bir urlencoded dizesi geçirirseniz sonrası kodlanmış / form-data multipart olmayacaktır.
Eğer normal bir HTML formu kullanılan ediyorum eğer bir sorun olmaz ise bu yüzden, CURL ile ikisini birleştirmeyi neredeyse imkansız görünüyor.
Benim soru şudur: çok boyutlu diziler ve dosya yüklemeleri göndermek edebilmek için CURL bu garip cilvesi atlamak mümkün mü?