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 Specs是在C#上編寫的,我在PHP上覆制了這些代碼,但是從2.step與fwrite獲取數據的方式並沒有獲取任何數據。 如果我執行這樣的代碼那樣的fwrite給我一個錯誤: fwrite()期望參數2是字符串,給定的對象。 –
如果你有'fwrite'錯誤,你應該調查'$ chunkBytes'是什麼類型。應該在API規範或PHP類的文檔中提及('$ API_Conn') – Matey