本文目录一览:
PHP 微信端上传图片,上传logo和banner图,哪位大神传授一下经验啊,有demo更好,可以加分
div class="header"
span头像/span
div class="head_r" style="position: relative"
img class="portrait_line" id="show_portrait" src="{$agent['portrait']}"
img src="__IMAGES__/more.png"
input type="file" name="portrait" id="portrait" data-server="{:U('Home/Upload/mobile_upload_portrait')}" style="width: 100%;height: 100%;position: absolute;left: 0px;top: 0px;opacity: 0;"-微信上传图片接口php
/div
/div
最后一个input file弄成透明的,占据整个你要触发上传的位置。
重点在下面,用原生ajax上传提交图片,并把上传后服务器本地的地址传回来,通过js付到表单里,并把图片缩小预览贴出来。
script
$(function(){
$("input#portrait").on("change",function(){
changepic('portrait','show_portrait');
});
});
var xhr;
var returnimg="";
var returninput="";
function changepic(id,img,input){
returnimg=img;
returninput=input;
var fileObj = document.getElementById(id).files[0];
var uploadServer = $("#"+id).attr("data-server");
var form = new FormData();
form.append("portrait", fileObj);
createXMLHttpRequest();
xhr.onreadystatechange = handleStateChange;
xhr.open("post", uploadServer, true);
xhr.send(form);
}
function createXMLHttpRequest()
{
if(window.ActiveXObject)
{
xhr = new ActiveXObject("Microsoft.XMLHTTP");
}
else if(window.XMLHttpRequest)
{
xhr = new XMLHttpRequest();
}
}
function handleStateChange()
{
var $loading=layer.open({type:2,})
if(xhr.readyState == 4)
{
if (xhr.status == 200 || xhr.status == 0)
{
var result = xhr.responseText;
var json = eval("(" + result + ")");
if(json.result=='success'){
$.ajax({
type:'post',
url:'/index.php/Wap/Self/updatePortrait',
data:{
portrait:json.url,
},
success:function(){
},
error:function(){
alert('服务器错误');
},
});
$("#"+returnimg).attr("src",json.url);
layer.close($loading);
}
else{
alert('上传头像失败'+json.msg);
layer.close($loading);
}
}
}
}
/script
然后是ajax上传的接口
public function mobile_upload_portrait(){//手机端上传头像
if(IS_POST){
$upload=new Upload();
$upload-maxSize = 3*1024*1024;//3M
$upload-exts = array('jpg', 'gif', 'png', 'jpeg');
$upload-rootPath = './';
$upload-savePath = '/Uploads/';
$upload-autoSub = true;
$upload-subName = array('date','Ymd');
$upload-saveName = 'uniqid';
if(!is_dir($upload-savePath)){
mkdir($upload-savePath);
}
$info = $upload-uploadOne($_FILES['portrait']);
if(!$info) {
$result=array('result'='fail','msg'='请上传3M以下的图片');
}else{
$result=array('result'='success','url'=$info['savepath'].$info['savename']);
}
$this-ajaxReturn($result);
}
}
代码是Thinkphp的项目截出来的,页面上有模板的痕迹,最后一段php的接口,也用了tp自带的文件上传类。不过看得懂的话,这些都不影响理解。
php微信拍照接口范例
// 图片接口
//拍照、本地选图
var images = {
localId: [],
serverId: []
};
wx.chooseImage({
success: function (res) {
images.localId = res.localIds;
alert('已选择 ' + res.localIds.length + ' 张图片');
}
});
//上传图片
$("#upload").click(function(){
if (images.localId.length == 0) {
alert('请先使用 chooseImage 接口选择图片');
return;
}
var i = 0, length = images.localId.length;
images.serverId = [];
function upload() {
wx.uploadImage({
localId: images.localId[i],
success: function (res) {
i++;
alert('已上传:' + i + '/' + length);
images.serverId.push(res.serverId);
if (i length) {
upload();
}
},
fail: function (res) {
alert(JSON.stringify(res));
}
});
}
upload();
});
// 5.4 下载图片
$("#download").click(function(){
if (images.serverId.length === 0) {
alert('请先使用 uploadImage 上传图片');
return;
}
var i = 0, length = images.serverId.length;
images.localId = [];
function download() {
wx.downloadImage({
serverId: images.serverId[i],
success: function (res) {
i++;
alert('已下载:' + i + '/' + length);
images.localId.push(res.localId);
if (i length) {
download();
}
}
});
}
download();
});
php微信上传永久图片素材求代码
您好,这样的:
//素材
const MEDIA_FOREVER_UPLOAD_URL = '/material/add_material?';
const MEDIA_FOREVER_NEWS_UPLOAD_URL = '/material/add_news?';
const MEDIA_FOREVER_NEWS_UPDATE_URL = '/material/update_news?';
const MEDIA_FOREVER_GET_URL = '/material/get_material?';
const MEDIA_FOREVER_DEL_URL = '/material/del_material?';
const MEDIA_FOREVER_COUNT_URL = '/material/get_materialcount?';
const MEDIA_FOREVER_BATCHGET_URL = '/material/batchget_material?';
/**
* 上传临时素材,有效期为3天(认证后的订阅号可用)
* 注意:上传大文件时可能需要先调用 set_time_limit(0) 避免超时
* 注意:数组的键值任意,但文件名前必须加@,使用单引号以避免本地路径斜杠被转义
* 注意:临时素材的media_id是可复用的!
* @param array $data {"media":'@Path\filename.jpg'}
* @param type 类型:图片:image 语音:voice 视频:video 缩略图:thumb
* @return boolean|array
*/
public function uploadMedia($data, $type){
if (!$this-access_token !$this-checkAuth()) return false;
//原先的上传多媒体文件接口使用 self::UPLOAD_MEDIA_URL 前缀
$result = $this-http_post(self::API_URL_PREFIX.self::MEDIA_UPLOAD_URL.'access_token='.$this-access_token.'type='.$type,$data,true);-微信上传图片接口php
if ($result)
{
$json = json_decode($result,true);
if (!$json || !empty($json['errcode'])) {
$this-errCode = $json['errcode'];
$this-errMsg = $json['errmsg'];
return false;
}
return $json;
}
return false;
}
/**
* 获取临时素材(认证后的订阅号可用)
* @param string $media_id 媒体文件id
* @param boolean $is_video 是否为视频文件,默认为否
* @return raw data
*/
public function getMedia($media_id,$is_video=false){
if (!$this-access_token !$this-checkAuth()) return false;
//原先的上传多媒体文件接口使用 self::UPLOAD_MEDIA_URL 前缀
//如果要获取的素材是视频文件时,不能使用https协议,必须更换成http协议
$url_prefix = $is_video?str_replace('https','http',self::API_URL_PREFIX):self::API_URL_PREFIX;
$result = $this-http_get($url_prefix.self::MEDIA_GET_URL.'access_token='.$this-access_token.'media_id='.$media_id);-微信上传图片接口php
if ($result)
{
if (is_string($result)) {
$json = json_decode($result,true);
if (isset($json['errcode'])) {
$this-errCode = $json['errcode'];
$this-errMsg = $json['errmsg'];
return false;
}
}
return $result;
}
return false;
}
/**
* 上传永久素材(认证后的订阅号可用)
* 新增的永久素材也可以在公众平台官网素材管理模块中看到
* 注意:上传大文件时可能需要先调用 set_time_limit(0) 避免超时
* 注意:数组的键值任意,但文件名前必须加@,使用单引号以避免本地路径斜杠被转义
* @param array $data {"media":'@Path\filename.jpg'}
* @param type 类型:图片:image 语音:voice 视频:video 缩略图:thumb
* @param boolean $is_video 是否为视频文件,默认为否
* @param array $video_info 视频信息数组,非视频素材不需要提供 array('title'='视频标题','introduction'='描述')
* @return boolean|array
*/
public function uploadForeverMedia($data, $type,$is_video=false,$video_info=array()){
if (!$this-access_token !$this-checkAuth()) return false;
//#TODO 暂不确定此接口是否需要让视频文件走http协议
//如果要获取的素材是视频文件时,不能使用https协议,必须更换成http协议
//$url_prefix = $is_video?str_replace('https','http',self::API_URL_PREFIX):self::API_URL_PREFIX;
//当上传视频文件时,附加视频文件信息
if ($is_video) $data['description'] = self::json_encode($video_info);
$result = $this-http_post(self::API_URL_PREFIX.self::MEDIA_FOREVER_UPLOAD_URL.'access_token='.$this-access_token.'type='.$type,$data,true);-微信上传图片接口php
if ($result)
{
$json = json_decode($result,true);
if (!$json || !empty($json['errcode'])) {
$this-errCode = $json['errcode'];
$this-errMsg = $json['errmsg'];
return false;
}
return $json;
}
return false;
}
/**
* 上传永久图文素材(认证后的订阅号可用)
* 新增的永久素材也可以在公众平台官网素材管理模块中看到
* @param array $data 消息结构{"articles":[{...}]}
* @return boolean|array
*/
public function uploadForeverArticles($data){
if (!$this-access_token !$this-checkAuth()) return false;
$result = $this-http_post(self::API_URL_PREFIX.self::MEDIA_FOREVER_NEWS_UPLOAD_URL.'access_token='.$this-access_token,self::json_encode($data));-微信上传图片接口php
if ($result)
{
$json = json_decode($result,true);
if (!$json || !empty($json['errcode'])) {
$this-errCode = $json['errcode'];
$this-errMsg = $json['errmsg'];
return false;
}
return $json;
}
return false;
}
/**
* 修改永久图文素材(认证后的订阅号可用)
* 永久素材也可以在公众平台官网素材管理模块中看到
* @param string $media_id 图文素材id
* @param array $data 消息结构{"articles":[{...}]}
* @param int $index 更新的文章在图文素材的位置,第一篇为0,仅多图文使用
* @return boolean|array
*/
public function updateForeverArticles($media_id,$data,$index=0){
if (!$this-access_token !$this-checkAuth()) return false;
if (!isset($data['media_id'])) $data['media_id'] = $media_id;
if (!isset($data['index'])) $data['index'] = $index;
$result = $this-http_post(self::API_URL_PREFIX.self::MEDIA_FOREVER_NEWS_UPDATE_URL.'access_token='.$this-access_token,self::json_encode($data));-微信上传图片接口php
if ($result)
{
$json = json_decode($result,true);
if (!$json || !empty($json['errcode'])) {
$this-errCode = $json['errcode'];
$this-errMsg = $json['errmsg'];
return false;
}
return $json;
}
return false;
}
/**
* 获取永久素材(认证后的订阅号可用)
* 返回图文消息数组或二进制数据,失败返回false
* @param string $media_id 媒体文件id
* @param boolean $is_video 是否为视频文件,默认为否
* @return boolean|array|raw data
*/
public function getForeverMedia($media_id,$is_video=false){
if (!$this-access_token !$this-checkAuth()) return false;
$data = array('media_id' = $media_id);
//#TODO 暂不确定此接口是否需要让视频文件走http协议
//如果要获取的素材是视频文件时,不能使用https协议,必须更换成http协议
//$url_prefix = $is_video?str_replace('https','http',self::API_URL_PREFIX):self::API_URL_PREFIX;
$result = $this-http_post(self::API_URL_PREFIX.self::MEDIA_FOREVER_GET_URL.'access_token='.$this-access_token,self::json_encode($data));-微信上传图片接口php
if ($result)
{
if (is_string($result)) {
$json = json_decode($result,true);
if (isset($json['errcode'])) {
$this-errCode = $json['errcode'];
$this-errMsg = $json['errmsg'];
return false;
}
return $json;
}
return $result;
}
return false;
}
/**
* 删除永久素材(认证后的订阅号可用)
* @param string $media_id 媒体文件id
* @return boolean
*/
public function delForeverMedia($media_id){
if (!$this-access_token !$this-checkAuth()) return false;
$data = array('media_id' = $media_id);
$result = $this-http_post(self::API_URL_PREFIX.self::MEDIA_FOREVER_DEL_URL.'access_token='.$this-access_token,self::json_encode($data));-微信上传图片接口php
if ($result)
{
$json = json_decode($result,true);
if (!$json || !empty($json['errcode'])) {
$this-errCode = $json['errcode'];
$this-errMsg = $json['errmsg'];
return false;
}
return true;
}
return false;
}
/**
* 获取永久素材列表(认证后的订阅号可用)
* @param string $type 素材的类型,图片(image)、视频(video)、语音 (voice)、图文(news)
* @param int $offset 全部素材的偏移位置,0表示从第一个素材
* @param int $count 返回素材的数量,取值在1到20之间
* @return boolean|array
* 返回数组格式:
* array(
* 'total_count'=0, //该类型的素材的总数
* 'item_count'=0, //本次调用获取的素材的数量
* 'item'=array() //素材列表数组,内容定义请参考官方文档
* )
*/
public function getForeverList($type,$offset,$count){
if (!$this-access_token !$this-checkAuth()) return false;
$data = array(
'type' = $type,
'offset' = $offset,
'count' = $count,
);
$result = $this-http_post(self::API_URL_PREFIX.self::MEDIA_FOREVER_BATCHGET_URL.'access_token='.$this-access_token,self::json_encode($data));-微信上传图片接口php
if ($result)
{
$json = json_decode($result,true);
if (isset($json['errcode'])) {
$this-errCode = $json['errcode'];
$this-errMsg = $json['errmsg'];
return false;
}
return $json;
}
return false;
}
/**
* 获取永久素材总数(认证后的订阅号可用)
* @return boolean|array
* 返回数组格式:
* array(
* 'voice_count'=0, //语音总数量
* 'video_count'=0, //视频总数量
* 'image_count'=0, //图片总数量
* 'news_count'=0 //图文总数量
* )
*/
public function getForeverCount(){
if (!$this-access_token !$this-checkAuth()) return false;
$result = $this-http_get(self::API_URL_PREFIX.self::MEDIA_FOREVER_COUNT_URL.'access_token='.$this-access_token);-微信上传图片接口php
if ($result)
{
$json = json_decode($result,true);
if (isset($json['errcode'])) {
$this-errCode = $json['errcode'];
$this-errMsg = $json['errmsg'];
return false;
}
return $json;
}
return false;
}