2015-06-04 29 views
6

ben dosya yüklemek ve bunun gibi aynı anda yazılan parametrelerini göndermek çalışıyorum form_params:guzzle ~ 6.0 çok parçalı ve

$response = $client->post('http://example.com/api', [ 
    'form_params' => [ 
     'name' => 'Example name', 
    ], 
    'multipart' => [ 
     [ 
      'name'  => 'image', 
      'contents' => fopen('/path/to/image', 'r') 
     ] 
    ] 
]); 

Ancak benim form_params alanları dikkate alınmaz ve sadece çok parçalı alanlar benim sonrası vücutta mevcut olduğu . Her ikisini de 6,0 ibre ile gönderebilir miyim?

cevap

11

Aynı soruna rastladım. Form_params'ınızı multipart dizisine eklemeniz gerekir. 'Isim', form öğesi adı ve 'içerik' ise değerdir. Eğer olacaktı verilen örnek kod:

$response = $client->post('http://example.com/api', [ 
    'multipart' => [ 
     [ 
      'name'  => 'image', 
      'contents' => fopen('/path/to/image', 'r') 
     ], 
     [ 
      'name'  => 'name', 
      'contents' => 'Example name' 
     ] 
    ] 
]); 
3

ben de orada var, ancak çok boyutlu params dizisi varsa ne yazık ki çalışmıyor. Eğer dizide sorgu parametreleri olarak form_paramaters gönderirseniz ben işe aldım tek yoldur:

$response = $client->post('http://example.com/api', [ 
    'query' => [ 
     'name' => 'Example name', 
    ], 
    'multipart' => [ 
     [ 
      'name'  => 'image', 
      'contents' => fopen('/path/to/image', 'r') 
     ] 
    ] 
]); 
+0

Bu RequestOptions karışımını başarıyla kullanabiliyor musunuz? Bu isteğinizi yaptığınızda, sorgu öğelerim gönderilir ancak çok parçalı değildir. – Brady

+0

Guzzle'ın bakıcısına göre, bu çalışmaz. Multipart diğer istek seçenekleriyle karıştırılamaz. https://github.com/guzzle/guzzle/issues/1386 – Brady

+0

Düzeltme. Sorgu, bir gövde ile ilgili seçenek olmadığı için işe yaramalı. – Brady

1

resmi belgeler göre, multipart ve form_params seçenekleri aynı anda kullanılamaz. Birini veya diğerini kullanmanız gerekecektir.

Uygulama/x-www-form-urlencoded istekleri için form_params ve çoktan/form veri istekleri için multipart kullanın.

İlgili konular