【发布时间】:2018-05-01 07:36:14
【问题描述】:
本网站上关于此主题的许多答案,但没有一个对我有帮助。
我正在尝试将文件发布到盒子(云存储)。应该很容易,但事实并非如此。
我使用RequestBin进行调试。
在命令行上使用 curl 时,效果很好(文件发布到 Box):
curl https://requestb.in/1bw1 -H "Authorization: Bearer supersecret" -H "Content-Type: multipart/form-data" -X POST -F file=@/tmp/testfile.pdf
当尝试使用 php curl 执行相同操作(将文件上传到 Box)时,它会失败(根本没有响应,这意味着找不到文件内容)。
我还在 RequestBin 上看到我的 POST 看起来不同。
Curl cli(正确):
原始的身体
------------------cd86e864290b 内容处置:表单数据;名称="属性"
{"name":"testfile.pdf", "parent":{"id":"40801665641"}} ------------------------------cd86e864290b 内容处置:表单数据;名称=“文件”;文件名="testfile.pdf" 内容类型:application/octet-stream
RIFFäÊWAVEfmt ...
Curl php(不正确):
原始的身体
------------------7ab3fffab8c6 内容处置:表单数据;名称="属性"
{"name":"testfile.pdf","parent":{"id":"42035106321"}} ------------------------------7ab3fffab8c6 内容处置:表单数据;名称="文件"
@../faxout/testfile.pdf ------------------7ab3fffab8c6--
这显然不一样,我不知道如何获得相同的结果。
我的 PHP 代码:
$dataFile = array(
'name' => $faxfilename,
'parent' => array(
'id' => $subfolderID,
)
);
$PostData= array(
'attributes' => json_encode($dataFile),
'file' => "@$target"
);
$headers3=array(
"Authorization: Bearer supersecret",
"Content-Type: multipart/form-data"
);
//$filesurl = "https://upload.box.com/api/2.0/files/content";
$filesurl = 'https://requestb.in/1bw1';
$curlFILE = curl_init();
curl_setopt_array($curlFILE, array(
CURLOPT_URL => $filesurl,
CURLOPT_HTTPHEADER => $headers3,
CURLOPT_POST => TRUE,
CURLOPT_POSTFIELDS => $PostData,
CURLOPT_RETURNTRANSFER => 1,
CURLOPT_SSL_VERIFYPEER => FALSE,
CURLOPT_SSL_VERIFYHOST => FALSE
));
我试过了:
CURLOPT_POSTFIELDS => http_build_query($PostData),
我试过了:
'@'.realpath($target)
我似乎没有得到我想要发布的文件的正确格式。
【问题讨论】: