我正在尝试使用以下 PHP 代码将文件上传到 Redmine。
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $url)
curl_setopt($curl, CURLOPT_HTTPHEADER, array(
'Content-Type: application/octet-stream',
'X-Redmine-API-Key: ' . $apiKey));
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_BINARYTRANSFER, TRUE);
$data = array('file' => '@' . $filePath);
curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
curl_setopt($curl, CURLOPT_POST, 1);
$token = curl_exec($curl);
Run Code Online (Sandbox Code Playgroud)
此请求返回有效的上传令牌,但文件在上传过程中已损坏。例如,尝试上传空的 .txt 文件会导致上传的被覆盖的 .txt 文件现在包含以下行。
------------------------------------------dde946a683ac
内容处置:表单数据;名称=“文件”;filename =“/var/www/wp-content/uploads/redmine_uploads/emptyTextFile.txt”内容类型:application/octet-stream
------------------------------------------dde946a683ac--
有什么想法为什么会发生这种情况吗?
弄清楚了。将我的代码修改为
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $url)
curl_setopt($curl, CURLOPT_HTTPHEADER, array(
'Content-Type: application/octet-stream',
'X-Redmine-API-Key: ' . $apiKey));
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
$file = fopen($filePath, 'r');
$size = filesize($filePath);
$filedata = fread($file,$size);
curl_setopt($curl, CURLOPT_POSTFIELDS, $filedata);
curl_setopt($curl, CURLOPT_INFILE, $file);
curl_setopt($curl, CURLOPT_INFILESIZE, $size);
curl_setopt($curl, CURLOPT_POST, 1);
$token = curl_exec($curl);
Run Code Online (Sandbox Code Playgroud)
产生所需的文件上传。
| 归档时间: |
|
| 查看次数: |
1330 次 |
| 最近记录: |