2012-10-15 9 views
0

SOAP를 사용하여 Taleo (Talent Management) 데이터베이스에 정보를 업로드 할 Drupal/PHP 모듈을 만들고 있습니다. 이것은 텍스트와 날짜 같은 일반 데이터에서는 잘 작동하지만 파일에서는 정상적으로 작동하지 않습니다. 내가이 얻을 "에코 $ B64File"할 때비누 : 이진 데이터 업로드

// Send attachment 
    $fileName = drupal_get_path('module', 'taleo') . '/test.txt'; 
    $rawFile = fread(fopen($fileName, "r"), filesize($fileName)); 
    $B64File = base64_encode($rawFile); 

    $params = array(
     'in0' => $session, 
     'in1' => $candidate_id, 
     'in2' => 'test.txt', 
     'in3' => 'test.txt', 
     'in4' => 'text/plain', 
     'in5' => $B64File 
    ); 

    $client_taleo->__call('createAttachment', $params); 

:

createAttachment Test Case: 
<soapenv:Header/> 
<soapenv:Body> 
<urn:createAttachment> 
<in0>webapi-5616904436472928038</in0> 
<in1>15</in1> 
<in2>test1.docx</in2> 
<in3>test1.docx</in3> 
<in4>application/vnd.openxmlformatsofficedocument. 
wordprocessingml.document</in4> 
<in5> 
<!--type: base64Binary--> 
<array>JVBERi0xLjQNJeLjz9MNCjYgMCBvYmogPDwvTGluZWFyaX==</array> 
</in5> 
</urn:createAttachment> 
</soapenv:Body> 
</soapenv:Envelope> 

그래서 나는이 같은 PHP 파일을 만든 :

매뉴얼은 첨부 파일의 예를 보여줍니다 RmlsZSB1cGxvYWQgd2l0aCBEcnVwYWwgIQ을 ==, 그래서 파일이 올바른 읽히고있다.

그러나 나는 항상이 오류가 발생합니다 :

ERROR : soapenv : Server.generalException-attBinDataArr가 null입니다.

아이디어가 있으십니까?

답변

2

array-tags로 base64 데이터를 캡슐화하는 것을 잊었습니다. 이 같은

<array>JVBERi0xLjQNJeLjz9MNCjYgMCBvYmogPDwvTGluZWFyaX==</array> 

뭔가 작업을해야합니다 :

$params = array(
    'in0' => $session, 
    'in1' => $candidate_id, 
    'in2' => 'test.txt', 
    'in3' => 'test.txt', 
    'in4' => 'text/plain', 
    'in5' => array('array' => $B64File) 
); 
+0

실제로 어떻게 PHP 코드가 어떻게 생겼는지 알 수 있습니까? .? 나는 –

+0

편집에 추가 'IN5':(모든 것을 시도 흠, 이미 시도 :(그 – Jaif

+0

=이> $ B64File는, 배열 태그를 캡슐화하는 방법에 더 많은 코드와 –

0

내가 배열 태그 뭔가를해야했다 분명, 그것은 확실히이다.

위의 대답은 "upvote"를받을 자격이 있으므로, 나는 그것을주었습니다. 하지만 정답을 찾았습니다 ... 몇 초 동안의 "논리"사고 이후. :)

'in5' => array('array' => $B64File)