微信公众号——永久素材的上传

微信公众号永久素材的上传

思路:1.需要上传到本地(因为后面需要用的本地的绝对路径 2.上传到微信服务器 3.添加信息到本地数据库

一、上传图片到本地

文件上传的方法
在这里插入图片描述
在这里插入图片描述

以下是我的代码
首先更改文件上传的配置
在这里插入图片描述
而后写我们的文件上传方法

 if (request()->isMethod("post")) {//本地图片上传//判断是否有文件上传 并且上传没有出错if (request()->hasFile("img_url") && request()->file("img_url")->isValid()){$img = request()->file("img_url");//获取图片数据$path = $img->store('img');//上传到img}}

这样本地文件上传就成功了 继续我们的第二步

二、公众平台上传图片

在这里插入图片描述
我们得知了上传图片所需要的信息。 而media是curl命令。我们要使用php自带类 CURLFile去处理 且CURLFlie参数必须为绝对路径。所以我们需要先把绝对路径拼接好。

 $absolute = public_path("uploads/".$path);//绝对路径

接着我们去调用接口发送请求

     //本地上传成功后 服务器上传$url ="https://api.weixin.qq.com/cgi-bin/material/add_material?access_token=".$this->get_access_token()."&type=image";//请求所需信息$data = ["media"=> new \CURLFile($absolute), //因为是curl上传所以要调用php自带函数CURLFile 并且要绝对路径];//发送请求$result = json_decode($this->http_post($url,$data),true);//因为没有说要json格式所以不用转换,但因为下面要用。返回的是json格式我们要转为数组格式

三、添加入库

判断微信平台是否上传成功。成功会返回media_id和url,而失败会返回一个errcode状态码。

 if(empty($result["errcode"])){//成功 添加入库$imgsource = new Img;$imgsource->img_name = request()->img_name;$imgsource->img_desc = request()->img_desc;$imgsource->img_url = asset("uploads/".$path);$imgsource->media = $result["media_id"];$imgsource->url = $result["url"];$imgsource->save();return redirect("/source/index");}else{//失败return redirect("/source/index");}

整体代码如下

 //添加图片public function img(){if (request()->isMethod("post")) {//本地图片上传//判断是否有文件上传 并且上传没有出错if (request()->hasFile("img_url") && request()->file("img_url")->isValid()){$img = request()->file("img_url");//获取图片数据$path = $img->store('img');//上传到img$absolute = public_path("uploads/".$path);//绝对路径//本地上传成功后 服务器上传$url ="https://api.weixin.qq.com/cgi-bin/material/add_material?access_token=".$this->get_access_token()."&type=image";//请求所需信息$data = ["media"=> new \CURLFile($absolute), //因为是curl上传所以要调用php自带函数CURLFile 并且要绝对路径];//发送请求$result = json_decode($this->http_post($url,$data),true);//因为没有说要json格式所以不用转换,但因为下面要用。返回的是json格式我们要转为数组格式//判断是否上传成功if(empty($result["errcode"])){//成功 添加入库$imgsource = new Img;$imgsource->img_name = request()->img_name;$imgsource->img_desc = request()->img_desc;$imgsource->img_url = asset("uploads/".$path);$imgsource->media = $result["media_id"];$imgsource->url = $result["url"];$imgsource->save();return redirect("/source/index");}else{//失败return redirect("/source/index");}}}}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/547295.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

nodejs在Liunx上的部署生产方式-PM2

先安装:npm install -g pm2 (注意:使用它要先安装它,用root账号和全局模式安装一下) 安装完成使用:pm2 -v 查看版本信息 安装成功之后,启动nodejs项目:pm2 start app.js --项目名…

安卓逆向之基于Xposed-ZjDroid脱壳 逆向分析(脱壳)

安卓逆向——某力播逆向分析(脱壳) 一、环境 这一步真的头疼,环境很重要,各种测试,一下是我测试的环境,由于没有真机,就拿虚拟机做测试 1. Xposed 2. FDex2 3. fiddler 4. 软件 二、抓包 通过 …

nginx php mysql一些常用命令(windows linux)

Nginx(nginx) 通常安装路径 /usr/local/nginx检查Nginx是否运行 ps aux | grep nginx重启Nginx /usr/local/nginx/sbin/nginx -s reload停止Nginx /usr/local/nginx/sbin/nginx -s stop测试配置 /usr/local/nginx/sbin/nginx -tPHP(php) PHP安装路径 /usr/local/php查看PH…

nodejs图片转换字节保存

fs.readFile(上传图片路径, function(err, data) {if (err) {// 错误处理return;}var base64str new Buffer(data).toString(base64); // 图片转换为字节fs.writeFileSync(copy.jpg, base64str); // 字节流保存为图片});

Apache/Tomcat/JBOSS/Nginx(2)

三.性能测试:将分别测试3种软件在对动态页面和静态页面请求及并发时的响应时间l 静态页面搜狐首页LIGHTTPDn/-c(ab参数)cpu%MemRequestsperSecondTime taken for tests100000/1006460462.7521.6100000/2006760312.0732.4100000/5008360137.2472.8100000/1000出现错误…

安卓逆向代码反混淆 Simplify工具 JEB2反混淆神器

【技术分享】Android程序反混淆利器——Simplify工具 https://www.anquanke.com/post/id/85388 发布时间:2017-01-23 17:21:23 问题背景 Android程序代码混淆是Android开发者经常用来防止app被反编译之后迅速被分析的常见手法。在没有混淆的代码中,被…

nodejs字符与字节之间的转换

new Buffer("Hello World").toString("base64"); /* yields SGVsbG8gV29ybGQNCg */new Buffer("SGVsbG8gV29ybGQNCg").toString("ascii"); /* yields Hello World */

Vmware虚拟机的安装和使用

安装虚拟机 一、安装虚拟机Vmware Workstation 下一步 下一步 如果C盘剩余空间大(大于50G),可安装在C盘 二、在虚拟机中安装Linux系统: 准备工作: Linux系统镜像文件(ISO文件) 1 、新建虚拟机…

XCode快捷键

1. 文件CMD N: 新文件CMD SHIFT N: 新项目CMD O: 打开CMD S: 保存CMD SHIFT S: 另存为CMD W: 关闭窗口CMD SHIFT W: 关闭文件2. 编辑 CMD [: 左缩进CMD ]: 右缩进CMD CTRL LEFT: 折叠CMD CTRL RIGHT: 取消折叠CMD CTRL TOP: 折叠全部函数CMD CTRL BOTTOM:…

pyinstaller 打包python应用为exe后 打包出现failed to execute script

pyinstaller 打包python应用为exe后 打包出现failed to execute script 打包后出现如题问题,只需在打包语句中加入pkg_resources.py2_warn这个包 pyinstaller -F -w xxx.py --hidden-import pkg_resources.py2_warn

【项目经验】如何用TexturePacker Physicseditor开发游戏

首先感谢Andreas的license。先广告一下Andreas。 -----------------------------------------------------------------------------------------http://www.codeandweb.com/texturepacker - The sprite sheet creator turns chaos into orderhttp://www.codeandweb.com/physic…

JSON.stringify转换Date不正确的解決方法

JSON.stringify转换Date不正确的原因:国际时区(UTC)和中国时区(GMT)的原因,东八区8等于国际时区。 解决方法,重新Es5的Date.prototype.toJSON方法,代码如下: function d…

smbd的安装与使用

文件共享服务软件 samba 安装与配置 安装了samba服务的主机,可以将文件共享给其它用户,其它用户可以对文件进行读写操作。 安装 以Ubuntu Linux为例 1、 安装 2、 检查是否安装成功 启动 samba服务: 查看samba服务状态: 3、 添…

PyQt5实现点击按钮获取文本框的值

目录 PyQt5笔记(01) – 创建空白窗体PyQt5笔记(02) – 按钮点击事件PyQt5笔记(03) – 消息框PyQt5笔记(04) – 文本框的使用PyQt5笔记(05) – 绝对位置 为了…

nodejs MVC

http://www.cnblogs.com/ppoo24/archive/2012/02/08/2343064.html

Laravel-admin 分类避免踩坑

一、模型层引入 use Encore\Admin\Traits\AdminBuilder; use Encore\Admin\Traits\ModelTree; 在方法中使用 use ModelTree,AdminBuilder; 最终代码为 <?phpnamespace App\Model;use Illuminate\Database\Eloquent\Model; use Encore\Admin\Traits\AdminBuilder; use Enco…

设置让TortoiseGit记住账号和密码

方法一&#xff1a;在"C:\Documents and Settings\Administrator\.gitconfig" 文件 或 "项目/.git/config"文件 里增加两行&#xff1a; [credential] helper store 设置好&#xff0c;再次输入用户名和密码之后&#xff0c;以后就不需要输入了。 方法…

python使用python-barcode生成任意长度字符串的条形码(一维码)详细教程

使用python-barcode生成一维码 1.安装python包 pip install Pillow pip install python-barcode2.实例程序 # -*- coding: utf-8 -*-import barcode import random from barcode.writer import ImageWriter import os from PIL import Image#生成一维码的类型的种类 "&…

Objective-C学习笔记(一)–类

1、类的定义与实现1.1说明所有的类都是继承NSObject。类的接口与实现是分开的&#xff0c;一般类的定义是放在.h文件【包含类的名称、成员变量、方法、属性、继承关系 、遵从的协议】&#xff1b;实现部分是放在.m文件中【包含每个属性和方法的具体实现以及协议的方法实现】语法…

SqlServer时间戳与普通格式的转换

/********************************************** 时间戳转换(秒) **********************************************/--普通时间转换为时间戳&#xff08;秒&#xff09;SELECT DATEDIFF(SS,1970-1-1 00:00:00,GETUTCDATE()) --毫秒时间戳转普通时间&#xff08;秒&#xff09…