2017-04-21 1 views
0

Ich werde gerne eine Datei von einer API mit Laravel/Guzzle bekommen.Eine Datei von der API holen (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, 
]]); 

ich die Datei von API mit diesem Aufruf:

$chunkBytes = $API_Conn->call('GetNextFileChunk', [[ 
    'sessionId' => $file_start->BeginChunkedFileDownloadResult, 
    'chunkSize' => $chunkSize, 
]]); 

ich diese verwenden, um die Datei zu speichern:

$fileStream = fopen(storage_path('/app/MemoQWSAPI/test.xliff'), 'w'); 

fwrite($fileStream, $chunkBytes, $chunkSize); 

fclose($fileStream); 

Das Problem ist, ich bin keine Daten immer aus die API.

Was mache ich falsch?

+1

Es ist schwierig, Ihre Frage zu beantworten, wenn die API uns unbekannt ist. Gibt die API einen Fehler zurück? Ihr Code scheint nicht einmal nach Fehlermeldungen von der API zu suchen. – Matey

+0

Es gibt 3 Anrufe: 1. 'BeginChunkedFileDownload' -> Ich habe eine SessionId und fileSize. 2. 'GetNextFileChunk' -> Um zu iterieren 3. 'EndChunkedFileDownload' -> zu schließen. On API Specs sind auf C# programmiert und ich habe diesen Code auf PHP reproduziert, aber der Weg, um die Daten von 2.Step mit fwrite zu bekommen, erhält keine Daten. Wenn ich diesen Code wie das fwrite ausführen, geben Sie mir einen Fehler: fwrite() erwartet Parameter 2 String, Objekt gegeben. –

+0

Wenn Sie einen Fehler von 'fwrite' haben, sollten Sie untersuchen, welcher Typ' $ chunkBytes' ist. Dies sollte in der API-Spezifikation oder in der Dokumentation der PHP-Klasse ('$ API_Conn') erwähnt werden. – Matey

Antwort

0

Vielen Dank, aber endlich habe ich den Fehler gefunden.

Das war, weil der API-Server automatisch eine Datei mit dem Namen Test.xliff erstellt, aber wie auf Server gespeichert ist, ist Test.xliff.dff89302a093s8402934a23948, Dateiname + Token.

Wie auch immer vielen Dank an euch alle.