【问题标题】:How to send a file or stream with Slim?如何使用 Slim 发送文件或流?
【发布时间】:2018-10-14 13:25:21
【问题描述】:

以下端点成功接收来自浏览器的文件。接下来我希望将此文件或流发送到另一个恰好也在使用 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

【问题讨论】:

  • 问题是你想如何将文件发送到其他服务器?通过 http、ftp 等?
  • @DanielO 好点。对不起。使用 HTTP。
  • 使用 curl 可以实现 http 文件上传。这是example。
  • @DanielO 是的,我可以从头开始这样做,但不知道是否有“苗条”的方式来这样做。 PS。应该使用CURLFile。
  • Afaik,这里没有特定的 Slim 方式,因为 Slim 不负责此类用例。

标签: php curl stream slim


【解决方案1】:

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

使用 guzzle 你可以这样做:

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

您可以阅读更多关于如何使用 guzzle here in the documentation 上传文件的信息。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-21
    • 1970-01-01
    相关资源
    最近更新 更多