从API获取文件(Guzzle,Laravel,PHP)

时间:2017-04-21 13:17:54

标签: php api laravel-5.3 fwrite guzzle

我很乐意使用Laravel / Guzzle从API获取文件。

$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获取任何数据。

我做错了什么?

1 个答案:

答案 0 :(得分:0)

谢谢大家,但最后我发现了错误。

那是因为API服务器自动创建一个名为Test.xliff的文件,但是在服务器上保存的是Test.xliff.dff89302a093s8402934a23948,filename + token。

无论如何,谢谢你们所有人。