php - 似乎无法使用 php Guzzle 上传大文件

标签 php curl file-upload guzzle

我在使用 Guzzle ( 5.2.0 ) 上传大文件时遇到问题

我添加了进度事件监听器并得到了这个输出:

Downloaded 0 of 0 Uploaded 966656 of 1467594
Downloaded 0 of 0 Uploaded 983040 of 1467594
Downloaded 0 of 0 Uploaded 999424 of 1467594
Downloaded 0 of 0 Uploaded 1015808 of 1467594
Downloaded 0 of 0 Uploaded 1032192 of 1467594
Downloaded 0 of 0 Uploaded 1048576 of 1467594
Downloaded 0 of 0 Uploaded 1064960 of 1467594
Downloaded 0 of 0 Uploaded 1081344 of 1467594
Downloaded 0 of 0 Uploaded 1097728 of 1467594
Downloaded 0 of 0 Uploaded 1114112 of 1467594
Downloaded 0 of 0 Uploaded 1130496 of 1467594
Downloaded 0 of 0 Uploaded 1146880 of 1467594
Downloaded 0 of 0 Uploaded 1146880 of 1467594
Downloaded 0 of 0 Uploaded 1146880 of 1467594
Downloaded 0 of 0 Uploaded 1146880 of 1467594
Downloaded 0 of 0 Uploaded 1146880 of 1467594
Downloaded 0 of 0 Uploaded 1146880 of 1467594
Downloaded 0 of 0 Uploaded 1146880 of 1467594
Downloaded 0 of 0 Uploaded 1146880 of 1467594
Downloaded 0 of 0 Uploaded 1146880 of 1467594
Downloaded 0 of 0 Uploaded 1146880 of 1467594
Downloaded 0 of 0 Uploaded 1146880 of 1467594
Downloaded 0 of 0 Uploaded 1146880 of 1467594
Downloaded 0 of 0 Uploaded 1146880 of 1467594

它似乎每次都卡在 1146880 字节处,挂起然后达到 curl 超时。

这是我格式化 guzzle 请求的方式:

$client = new \GuzzleHttp\Client();
$endpoint = 'http://myendpoint.com'

$file = new splfileobject( '/path/to/file' )

$options = [
    "body" => [
        "file" => fopen( $file->getRealPath(), 'r' )
    ]
]

$client->post( $endpoint, $options );

当我切换到使用原始 curl 时,我可以使用“@filename”语法上传图像。

有什么想法吗?谢谢!

最佳答案

你试过吗?

"file" => "@" . $file->getRealPath()

我发现这家伙有类似的问题- http://alex-panshin.me/blog/file-upload-with-guzzle/

我认为他收到了 413(请求太大)- 您收到了什么 HTTP 错误响应(如果有)?

有关更多信息,请参阅此处 https://craftcms.stackexchange.com/a/2330

如果所有其他方法均失败,请 try catch 使用 curl 时设置的 header 和使用 Guzzle 时设置的 header ,并找出是否存在差异。

关于php - 似乎无法使用 php Guzzle 上传大文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30332441/

相关文章:

php - 在 ubuntu 上为 php7.1 安装 imap

linux - 如何让 cURL 不显示进度条?

php - 在客户端检测文件上传大小?

php - 存储 session 以供成员(member)区使用

php - MySQL INSERT --- 获取 ID (auto_increment) 如果一个值是唯一的

PHP:if(function_exists ('curl_init' )) 行得通吗?

php - 使用 PHP 的 cURL 多线程

javascript - 如何在 HTML5 中恢复中断的上传

ios - iOS SDK v2 的 Amazon S3 视频上传问题

php - Apache 重写排除 Assets 目录