不确定为什么,但由于我使用下面的代码上传PPT或PPTX文件的原因,文件以某种方式被破坏。当我尝试在一个驱动器中查看该文件时,它显示错误“抱歉,我们无法打开此演示文稿,因为我们遇到了问题。要查看或编辑此演示文稿,请打开它是Microsoft PwerPoint。”
上传PDF时,一切正常。从'Chrome Postman Extension'上传ppt文件也可以正常工作。所以我的代码一定存在问题,但我无法弄清楚。
$client = new \GuzzleHttp\Client();
$response = $client->post(
'https://apis.live.net/v5.0/me/skydrive/files?access_token=' . $access_token,
[
'headers' => ['content-type' => 'multipart/form-data'],
'body' => [
'file' => fopen($path, 'r+')
]
]
);
echo $response->json();
此代码使用的是guzzle 4.0
------------------编辑-----
我也试过更新版本的guzzle(6. *),但是我只是无法上传任何文件。
当使用'r'表示fopen时,它会给出。
curl_setopt_array():无法将输出类型的流表示为STDIO FILE *
并使用任何其他模式提供
每个视频流必须具有可读性
$client = new GuzzleHttp\Client(['debug'=>true]);
echo $client->post(
'https://apis.live.net/v5.0/me/skydrive/files?'.$token,
[
//'headers' => $headers,
'multipart' => [
[
'name' => 'file',
'contents' => fopen("J:/project data/MSL 4/Alcon MSL-Add-ons Jan 30.pdf", 'rb+'),
]
]
]
);