项目环境:
1、前端用PHP
2、接口后端用.net
问题:
后端的一个图处上传接口是用二进制流接受,这样在PHP端就要以二进制流的形式传送给接口。
之前准备用CURL来传,后来发现.net这边仅仅接受body二进制流的形式。
只能重新封装一个小方法来传送了:
/**
* @desc 发送文件流
* @param string $url
* @param binary $file
* @return string
*/
function sendStreamFile($url, $file) {
if (empty($url) || empty($file)) { return false; }
$opts = array(
'http' => array(
'method' => 'POST',
'header' => 'content-type:application/x-www-form-urlencoded',
'content' => $file
)
);
$context = stream_context_create($opts);
$response = file_get_contents($url, false, $context);
return $response;
}
说明:这里的file是二进制文件流的形式。
那么在input file的时候,要转换成二进制流。
if (isset($_FILES['imageurl']) && $_FILES['imageurl']['size'] !=0) {
$imageurl = $_FILES['imageurl'];
$fp = fopen($imageurl['tmp_name'], 'r');
$filebinary = fread($fp, filesize($imageurl['tmp_name']));
fclose($fp);
$result = sendStreamFile(API_URL.'/apis/common/uploadPicture', $filebinary);
$josn = json_decode($result, true);
$setarr['imageurl'] = $josn['imageUrl'];
}
测试过后,返回正常~