php - 发送文件 CURL + PHP 7
问题描述
我使用代码发送 zip 文件,这很好用:
$file = ''.$_SERVER['DOCUMENT_ROOT'].'/projects/file.zip';
$data = array(
"file" => new CURLFile($file),
"data" => '{"title":"Test"}'
);
$handle = curl_init();
curl_setopt($handle, CURLOPT_URL, 'https://example.com');
curl_setopt($handle, CURLOPT_RETURNTRANSFER, true);
curl_setopt($handle, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($handle, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($handle, CURLOPT_HTTPHEADER, array(
'Content-type: multipart/form-data;',
));
curl_setopt($handle, CURLOPT_POSTFIELDS, $data);
$final = curl_exec($handle);
$response = json_decode($final, true);
curl_close ($handle);
但是当我发送一个带有 .keystore 扩展名的文件时,没有任何效果。我在服务器上没有收到错误。
如何正确发送这样的文件?
解决方案
你可以试试这个
$file = ''.$_SERVER['DOCUMENT_ROOT'].'/projects/file.zip';
$mime = mime_content_type($file);
$info = pathinfo($file);
$name = $info['basename'];
$output = new CURLFile($file, $mime, $name);
$data = array(
"file" => $output,
"data" => '{"title":"Test"}'
);
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'https://example.com');
curl_setopt($ch, CURLOPT_POST,1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
$result = curl_exec($ch);
if (curl_errno($ch)) {
$result = curl_error($ch);
}
curl_close ($ch);
推荐阅读
- python - 在单独的列中返回所有“如果条件值”
- python - 如何从 cv2.decomposeProjectionMatrix 理解欧拉角?
- javascript - 如何为 FullCalendar 事件动态分配颜色
- docker - Docker Compose“热重载”问题
- node.js - 在firebase云功能/ Nodejs中使用busboy和sharp调整图像大小
- firefox - 从十六进制格式解码 Firefox 浏览器缓存条目
- matlab - 如何绘制类似于 lassoPlot.m 生成的图形以指定正则化参数?
- javascript - 如果数据表中的单元格是字段,则禁用文本区域和按钮
- javascript - 使用 javascript 通过单击图像或文件链接下载文件,但它不适用于图像
- c++ - 从 C 调用 C++ 函数以返回 char *