我正在尝试使用OneDrive的API将文件上传到用户文件夹中。
$cfile = curl_file_create(realpath($_POST['ppt-file']));
//place file in folder
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "https://apis.live.net/v5.0/". $my_folder ."/files?access_token=" . $access_token);
curl_setopt($ch, CURLOPT_POST, TRUE);
curl_setopt($ch, CURLOPT_POSTFIELDS, $cfile);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
$upload_result = trim(curl_exec($ch));
curl_close($ch);
我从API得到了响应。
请求实体主体在“Content-Disposition”头中具有不正确的值。该值的预期格式为“Content-Disposition:form-data; name="file"; filename="[FileName]"”。
不确定我做错了什么,但这是预期的http标头。
POST https://apis.live.net/v5.0/me/skydrive/files?access_token=ACCESS_TOKEN
Content-Type: multipart/form-data; boundary=A300x
--A300x
Content-Disposition: form-data; name="file"; filename="HelloWorld.txt"
Content-Type: application/octet-stream
Hello, World!
--A300x--
感谢您的提前帮助!
更新: 当我直接将API网址放入表单的操作属性中,并将文件输入字段重命名为“file”时,文件会被上传。但我只是在我的页面上打印了响应,这当然不是我想要发生的事情。
<form action="<?php echo "https://apis.live.net/v5.0/". $my_folder ."/files?access_token=" . $access_token; ?>" method="post" enctype='multipart/form-data'>
<input type="file" name="file"/>
<input type="submit" value="Upload your ppt" name="btnUpload"/>
</form>