【问题标题】:Getting a file from API ( Guzzle, Laravel, PHP )从 API(Guzzle、Laravel、PHP)获取文件
【发布时间】:2017-04-21 13:17:54
【问题描述】:

我喜欢使用 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 获取任何数据。

我做错了什么?

【问题讨论】:

  • 如果我们不知道 API,很难回答您的问题。 API 是否返回任何错误?您的代码似乎甚至没有检查来自 API 的错误消息。
  • 有 3 个调用: 1. 'BeginChunkedFileDownload` -> 我有一个 SessionId 和 fileSize。 2.'GetNextFileChunk' -> 迭代 3.'EndChunkedFileDownload' -> 关闭。在 API 规范上是用 C# 编写的,我在 PHP 上复制了这段代码,但是使用 fwrite 从 2.Step 获取数据的方法没有得到任何数据。如果我像 fwrite 那样执行这段代码,给我一个错误:fwrite() 期望参数 2 是字符串,给定对象。
  • 如果您收到来自fwrite 的错误,您应该调查$chunkBytes 是什么类型。应该在API规范或者PHP类的文档中提到($API_Conn)

标签: php api laravel-5.3 fwrite guzzle


【解决方案1】:

谢谢大家,但我终于找到了错误。

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

无论如何,谢谢大家。

【讨论】:

    猜你喜欢
    • 2017-04-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-14
    • 2017-01-17
    • 2020-06-27
    • 2016-04-16
    • 2015-12-04
    相关资源
    最近更新 更多