php post 充值接口,php如何post 2进制数据到接口

php如何post 2进制数据到接口,如客户端上传的文件,不需要再服务器端保存,而直接保存到其他网盘,数据库存储网盘返回的url地址什么的,节省服务器空间。

可以构造HTTP POST请求的信息体,用file_get_contents POST请求发送到接口即可。

if($_POST["action"]=="upload"){

define('MULTIPART_BOUNDARY', '--------------------------'.microtime(true));

//没怎么玩PHP,这里有个坑啊。。玛达。。用单引号括起的字符\r\n直接是字符串,不是换行字符,要用双引号括起才是。导致content-type和user-agent请求头在一行上了,设置不了content-type。。

$header = "User-Agent:Mozilla/5.0 (Windows NT 6.1; WOW64; rv:58.0) Gecko/20100101 Firefox/58.0\r\nContent-Type: multipart/form-data; boundary=".MULTIPART_BOUNDARY;

define('FORM_FIELD', 'smfile');

$file_contents = file_get_contents($_FILES["smfile"]["tmp_name"]); //读取临时文件的2进制内容

//可以这里修改POST的键名称,文件名。

$content = "--".MULTIPART_BOUNDARY."\r\n".

"Content-Disposition: form-data; name=\"".FORM_FIELD."\"; filename=\"smfile.jpg\"\r\n".

"Content-Type: application/jpeg\r\n\r\n".

$file_contents."\r\n";

//其他表单内容

$content .= "--".MULTIPART_BOUNDARY."\r\n".

"Content-Disposition: form-data; name=\"bb\"\r\n\r\n".

"test\r\n";

$content .= "--".MULTIPART_BOUNDARY."--\r\n";

$context = stream_context_create(array(

'http' => array(

'method' => 'POST',

'header' => $header,

'content' => $content,

)

));

$s= file_get_contents('https://sm.ms/api/upload', false, $context);

if($s!==false){

echo $s;

$o=json_decode($s);

if($o->code=="success")echo "%22.%24o->data->url.%22";

else echo $o->msg;

}

else echo "上传失败";

}

?>

加支付宝好友偷能量挖...

2018-6-13网络

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值