thinkphp 위챗 개발 jssdk 이미지 업로드 및 로컬 서버 다운로드
5467 단어 thinkphp
public function test2(){
$Weixin = new \Weixin\Controller\BaseController();
$this->assign('signPackage', $Weixin->jssdk->GetSignPackage());
$this->display();
}
html 핵심 코드
<script type="text/javascript" src="__STATIC__/jquery-2.0.3.min.js"></script>
<script src="http://res.wx.qq.com/open/js/jweixin-1.0.0.js"></script>
<form action="{:U('doJoin')}" method="post">
<h3 class="title"> :</h3>
<div>
<img class="preview" src="{$vote.vote_pic|get_cover='thumb'}" alt="">
<if condition="!$vote['status']" ><button class="uploadImage" type="button" id="vote_pic"> ( 800*600 png,jpg, gif )</button></if>
<input type="hidden" name="vote_pic">
</div>
<button class="bbon" type="submit" id="submit"> </button>
</form>
<script>
wx.config({
debug: false,
appId: '<?php echo $signPackage["appId"];?>',
timestamp: <?php echo $signPackage["timestamp"];?>,
nonceStr: '<?php echo $signPackage["nonceStr"];?>',
signature: '<?php echo $signPackage["signature"];?>',
jsApiList: [
// API
'chooseImage',
'previewImage',
'uploadImage',
'downloadImage'
]
});
wx.ready(function () {
// 5.1 、
var images = {
localId: [],
serverId: []
};
// 5.3
$(".uploadImage").click(function(){
var that =$(this);
images.localId = [];
wx.chooseImage({
success: function (res) {
images.localId = res.localIds;
if (images.localId.length == 0) {
alert(' chooseImage ');
return;
}
if(images.localId.length > 1) {
alert(' , ');
images.localId = [];
return;
}
var i = 0, length = images.localId.length;
images.serverId = [];
function upload() {
wx.uploadImage({
localId: images.localId[i],
success: function (res) {
i++;
that.siblings('img.preview').attr('src',images.localId[0]);
// alert(' :' + i + '/' + length);
images.serverId.push(res.serverId);
that.siblings('input[type=hidden]').val(images.serverId[0]);
// alert( that.siblings('input[type=hidden]').val());
if (i < length) {
upload();
}
},
fail: function (res) {
alert(JSON.stringify(res));
}
});
}
upload();
}
});
});
$("#submit").click(function(){
$.ajax({
type: 'post',
url: $("form").attr('action') ,
data : $("form").serialize(),
dataType: 'json',
success : function(data){
if(data.status){
alert(data.info);
window.location.href = data.url;
}else{
}
}
});
return false;
})
});
</script>
서버 측에 제출 처리 과정은 다음과 같습니다.
public doJoin(){
if(IS_POST && $_POST['vote_pic']){ // vote_pic id
$pic_id = $_POST['vote_pic'];
$return = array();
C('WEIXIN_UPLOAD') = './Uploads/Weixin/';//
$dir = realpath(C('WEIXIN_UPLOAD')).'/'.date('Y_m_d').'/';//
if(!file_exists($dir)){
mkdir($dir,'0777');
}
$Weixin = new \Weixin\Controller\BaseController();
$pic_url = $Weixin->WechatAuth->mediaGet($pic_id); //
$time = time().substr($pic_id, 9,3);
$filename = 'wx_'.$time.'.jpg'; //
$Http = new \Org\Net\Http;
if($Http::curlDownload($pic_url,$dir.$filename)){//http
$this->success(' ',U('index'));
}
}
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Thinkphp의 S 캐시 사용법!텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.