blob取回来会是一个[字符串类型]的字节串,用strlen获得字节数.
这个是常见的一种错误 一般使用header() 函数的时候
前面不可以有 任何输出, 有时候不小心 ?php 上面 有空格或者 回车都不可以
要显示图片Header( "Content-type: image/JPEG"); 是必须要有的
在调用公众号接口".$token."type=".$type;
经过多次测试使用下面的方式,可以正常上传
//调用测试
protected static $url;
protected static $delimiter;
protected static $instance;
public function index()
{
? ? ? static::$delimiter = uniqid();
$basename = Request::instance()-root();
if (pathinfo($basename, PATHINFO_EXTENSION) == 'php') {
? $basename = dirname($basename);
}
? ? ? $result=$this-wxAddMaterial($token,$basename.'/upload/images/gnlog.jpg','image');
? }
// 新增其他类型永久素材
public function wxAddMaterial($token,$filename='',$type='') {
? // 设置请求参数
? static::$url = "".$token."type=".$type;
? $filePath = str_replace('\\', '/', $filename);
? // 发送请求
? $imginfo=pathinfo($filePath);
? $fields = array(
? ? ? 'media'=file_get_contents(".".$filePath),
? ? ? 'filename'=$imginfo["basename"],
);
? $res = $this-putPart( $fields);
? return $res;
//推送文件流
public function putPart($param) {
? $post_data = static::buildData($param);
? $curl = curl_init(static::$url);
? curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
? curl_setopt($curl, CURLOPT_POST, true);
? curl_setopt($curl, CURLOPT_POSTFIELDS, $post_data);
? curl_setopt($curl, CURLOPT_HTTPHEADER, [
? ? ? "Content-Type: multipart/form-data; boundary=" . static::$delimiter,
? ? ? "Content-Length: " . strlen($post_data)
]);
? $response = curl_exec($curl);
? curl_close($curl);
? return $response;
//编译请求头格式和数据流
private static function buildData($param){
? $data = '';
? $eol = "\r\n";
? $upload = $param['media'];
? unset($param['media']);
? foreach ($param as $name = $content) {
? ? ? $data .= "--" . static::$delimiter . "\r\n"
? ? ? ? ? . 'Content-Disposition: form-data; name="' . $name . "\"\r\n\r\n"
? ? ? ? ? . $content . "\r\n";
? $data .= "--" . static::$delimiter . $eol
? ? ? . 'Content-Disposition: form-data; name="media"; filename="' . $param['filename'] . '"' . "\r\n"
? ? ? . 'Content-Type:application/octet-stream'."\r\n\r\n";
? $data .= $upload . "\r\n";
? $data .= "--" . static::$delimiter . "--\r\n";
? return $data;
根据自己的实际情况稍作修改
imagegif(resource $image [, string $filename ]) 从 image 图像以 filename 为文件名创建一个 GIF 图像.image 参数是 imagecreate() 或 imagecreatefrom* 函数的返回值.
imagejpeg(resource $image [, string $filename ]) 从 image 图像以 filename 为文件名创建一个 JPEG 图像.
imagepng(resource $image [, string $filename ]) 将 GD 图像流(image)以 PNG 格式输出到标准输出(通常为浏览器),或者如果用 filename 给出了文件名则将其输出到该文件.
filename 文件保存的路径,如果未设置或为 NULL,将会直接输出原始图象流.
这几个函数你参考一下,希望对你有帮助.
以上就是土嘎嘎小编为大家整理的php.数据流相关主题介绍,如果您觉得小编更新的文章只要能对粉丝们有用,就是我们最大的鼓励和动力,不要忘记讲本站分享给您身边的朋友哦!!