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

mik*_*ein 7 php curl file-upload guzzle

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

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

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
Run Code Online (Sandbox Code Playgroud)

它似乎每次都停留在1146880字节,挂起然后点击卷曲超时.

这是我如何格式化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 );
Run Code Online (Sandbox Code Playgroud)

当我切换到使用原始卷曲时,我可以使用'@filename'语法上传图像.

有任何想法吗?谢谢 !

Car*_*ton 1

你试过这个吗?

"file" => "@" . $file->getRealPath()
Run Code Online (Sandbox Code Playgroud)

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

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

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

如果所有其他方法都失败,请尝试捕获使用 curl 时设置的标头和使用 Guzzle 时设置的标头,并找出是否存在差异。