首页 > 解决方案 > 如何使用 Slim 发送文件或流?

问题描述

以下端点成功接收来自浏览器的文件。接下来我希望将此文件或流发送到另一个恰好也在使用 Slim 的服务器。正如我在这里所做的那样,我显然知道如何在另一台服务器上接收文件,但不知道如何将此文件/流发送到另一台服务器。这是如何实现的。谢谢

$app->post(_VER_.'/tools/import', function (Request $request, Response $response) {
    $uploadedFiles = $request->getUploadedFiles();
    $files = $request->getUploadedFiles();
    if (empty($files['file'])) {
        throw new \Exception('"file" is missing');
    }

    $file = $files['file'];
    syslog(LOG_INFO, 'name: '.$file->getClientFilename().' type: '.$file->getClientMediaType().' size: '.$file->getSize());
    $stream=$file->getStream();
    syslog(LOG_INFO, 'stream size: '.$stream->getSize());
});

输出:

Oct 14 13:19:18 devServer API[62322]: name: report (17).csv type: application/vnd.ms-excel size: 451090
Oct 14 13:19:18 devServer API[62322]: stream size: 451090

标签: phpcurlstreamslim

解决方案


这不是slim自己能做到的。您将需要直接使用 CURL 或像guzzle这样的库。

用 guzzle 你可以做这样的事情:

$guzzleClient->request(
    'POST',
    'http://yourserveraddress.com/post',
    ['body' => $file->getStream()]
);

您可以在文档中阅读更多关于如何使用 guzzle 上传文件的信息。


推荐阅读