あなたのサポートのためにフォーマットが悪いと申し訳ありません。私はこの時間をより良く説明しようとします。 場所 'C:\ xampp \ htdocs \ drupalTheme'にContent_4_2.zipという名前のzipファイルがあります。このジップには2つのxmlファイルが含まれています。 このzipを渡したいWebサービスメソッドには、次のような定義があります。PHPコードでZIPファイルにアクセスするには
<soap:Body>
<AddFileToProject xmlns="http://tempuri.org/">
<Ticket>string</Ticket>
<ProjectID>string</ProjectID>
<Filename>string</Filename>
<FileData>base64Binary</FileData>
<SourceLanguageID>string</SourceLanguageID>
<TargetLanguageIDs>
<string>string</string>
<string>string</string>
</TargetLanguageIDs>
<Metadata>
<Meta Name="string" Value="string" />
<Meta Name="string" Value="string" />
</Metadata>
<IsReferenceMaterial>boolean</IsReferenceMaterial>
</AddFileToProject>
</soap:Body>
FileData 'base64Binary'は、送信したいコンテンツ、つまりzipファイルです。 Javaでは、私は ファイルをbytearrayに変換することができ、Webサービスはsucessfully.Nowと呼ばれていました。私は、このような変換はPHPでないことを知っています。 私のアプローチは です。1. ディレクトリからzipファイルの名前を取得します。2. zipの内容をWebサービスにパスします。
私はこれを試してみました:
$zipFile = 'C:/xampp/htdocs/drupalTheme/Content_4_2.zip';
$zip = zip_open($zipFile);
$addFile = $ServicesLink->AddFileToProject(array('Ticket'=>$ticket,'ProjectID'=>$projectID,'Filename'=>$fileName,'FileData'=> $zip, 'SourceLanguageID'=> $srcLang, 'TargetLanguageIDs'=> $finalTarArray,'Metadata'=> null,'IsReferenceMaterial'=>false));
このappraoch
$zipFile = 'C:/xampp/htdocs/drupalTheme/Content_4_2.zip';
$file = file_get_contents('./Content_4_2.zip',true);
$byteArr = str_split($file);
foreach ($byteArr as $key=>$val) { $byteArr[$key] = ord($val); }
$addFile = $ServicesLink->AddFileToProject(array('Ticket'=>$ticket,'ProjectID'=>$projectID,'Filename'=>$fileName,'FileData'=> $byteArr, 'SourceLanguageID'=> $srcLang, 'TargetLanguageIDs'=> $finalTarArray,'Metadata'=> null,'IsReferenceMaterial'=>false));
オーバー送ら壊れたzipファイル内の両方の結果を。
あなたの意見を同じにしたいと思います。
ようこそ!これに利用できるライブラリがあります:グーグルの 'drupal zip'や' php zip'は必要なものすべてを提供するはずです。 –
これは再フォーマットされたので、私はあなたの質問が何であるか分かりません。 zipファイルを解凍する必要がありますか、それとも他の方法についてですか? –
@Angela Sim:あなたの質問は完全にはっきりしていません - あなたは「Javaではzipファイルをbytearrayに変換することができました」という_は、Zipファイル全体を変換(および送信)したように聞こえます。しかし、あなたのテストの例では、まずアーカイブを解凍し、含まれているファイルを送信しようとします。どのファイルを送信しますか?ZIPアーカイブ全体、または含まれているファイルは個別に保存しますか? –