2015-06-21 52 views

回答

2
狂饮

使用PSR7到多部分形式的字段组合到请求机构。处理自定义边界的最正确方法是使用GuzzleHttp \ Psr7 \ MultipartStream

$boundary = 'my_custom_boundary'; 
$multipart_form = [ 
    [ 
     'name' => 'upload_id', 
     'contents' => $upload_id, 
    ], 
    [ 
     'name' => '_uuid', 
     'contents' => $uuid, 
    ], 
    ... 
]; 

$params = [ 
    'headers' => [ 
     'Connection' => 'close', 
     'Content-Type' => 'multipart/form-data; boundary='.$boundary, 
    ], 
    'body' => new GuzzleHttp\Psr7\MultipartStream($multipart_form, $boundary), // here is all the magic 
]; 

$res = $this->client->request($method, $url, $params); 
1

我有同样的错误,这里是我如何解决它。

//encode field 
$field_string = json_encode($field_data); 
//read file 
$file_string = Flysystem::read($config['doc_path']); 
// hack, request body, inject field and file into requet body, set boundary 
$request_body = 
    "\r\n" 
    ."\r\n" 
    ."--customboundary\r\n" 
    ."Content-Type: application/json\r\n" 
    ."Content-Disposition: form-data\r\n" 
    ."\r\n" 
    ."$field_string\r\n" 
    ."--customboundary\r\n" 
    ."Content-Type:application/pdf\r\n" 
    ."Content-Disposition: file; filename=".$config['deal_name'].";documentid=".$config['deal_id']." \r\n" 
    ."\r\n" 
    ."$file_string\r\n" 
    ."--customboundary--\r\n" 
    ."\r\n"; 

//create request, boundary is required for docusign api 
$result = $this->client->createRequest('POST',"$this->baseUrl/templates", [ 
'headers' => [ 
    'Content-Type' => 'multipart/form-data;boundary=customboundary', 
    'Content-Length' => strlen($request_body), 
    'X-DocuSign-Authentication' => json_encode([ 
     'Username' => Config::get('docusign.email'), 
     'Password' => Config::get('docusign.password'), 
     'IntegratorKey' => Config::get('docusign.integratorKey') 
    ]), 
    ], 
    'body' => $request_body 
]); 
相关问题