0
私はLaravel/Guzzleを使用してAPIからファイルを取得したいと思います。APIからファイルを取得する(Guzzle、Laravel、PHP)
$API_Conn = $factory->create(new Client(), MemoQWSAPI::FileManager());
$chunkSize = 500000;
$file_start = $API_Conn->call('BeginChunkedFileDownload', [[
'fileGuid' => $file_Guid,
'zip' => false,
]]);
$fileStream = fopen(storage_path('/app/MemoQWSAPI/test.xliff'), 'w');
$fileBytesLeft = $file_start->fileSize;
while($fileBytesLeft > 0){
$chunkBytes = $API_Conn->call('GetNextFileChunk', [[
'sessionId' => $file_start->BeginChunkedFileDownloadResult,
'chunkSize' => $chunkSize,
]]);
$write = fwrite($fileStream, $chunkBytes, $chunkSize);
$fileBytesLeft -= $chunkSize;
}
$res = $API_Conn->call('EndChunkedFileDownload', [[
'sessionId' => $file_start->BeginChunkedFileDownloadResult,
]]);
fclose($fileStream);
$API_Conn->call('DeleteFile', [[ // Export the file in to a Xliff File
'fileGuid' => $file_Guid,
]]);
私はこの呼び出しとAPIからファイルを取得:
$chunkBytes = $API_Conn->call('GetNextFileChunk', [[
'sessionId' => $file_start->BeginChunkedFileDownloadResult,
'chunkSize' => $chunkSize,
]]);
私は、ファイルを保存するためにこれを使用します。
$fileStream = fopen(storage_path('/app/MemoQWSAPI/test.xliff'), 'w');
fwrite($fileStream, $chunkBytes, $chunkSize);
fclose($fileStream);
問題は、私がから任意のデータが届かないですAPI。
私は間違っていますか?
APIがわからない場合は、あなたの質問に答えにくいです。 APIはエラーを返しますか?あなたのコードはAPIからのエラーメッセージをチェックしていないようです。 – Matey
3つのコールがあります: 1. 'BeginChunkedFileDownload' - >私はSessionIdとfileSizeを持っています。 2.'GetNextFileChunk ' - >反復する場合 3.' EndChunkedFileDownload ' - >をクリックします。 API仕様はC#でプログラミングされていますが、PHPでこのコードを再現しましたが、fwriteで2Stepからデータを取得する方法はデータを取得しません。 このようなコードを実行すると、エラーが表示されます。 fwrite()は、パラメータ2が文字列であると想定しています。 –
'fwrite'でエラーが発生した場合は、' $ chunkBytes'がどのタイプであるか調べるべきです。これは、API仕様書またはPHPクラスのドキュメント( '$ API_Conn')に記述する必要があります。 – Matey