微信小程序图片选择、上传到服务器、预览(PHP)实现实例


Posted in Javascript onMay 11, 2017

微信小程序图片选择、上传到服务器、预览(PHP)实现实例

小程序实现选择图片、预览图片、上传到开发者服务器上

后台使用的tp3.2 图片上传

请求时候的header参考时可以去掉(个人后台验证权限使用)

小程序前端代码:

<view class="section">
 <form bindsubmit="bindFormSubmit">
  <textarea placeholder="请输入问题内容" name="content"/>
  <view class="">
   选择提问图片:  <label bindtap="checkimg">点击选择图片</label>
  </view>
  <view class="">
    <image wx:for="{{imglist}}" mode="aspectFit" bindtap="ylimg" data-src="{{item}}" style="width:75px;height:75px;" src="{{item}}"></image>
  </view>
  <button form-type="submit"> 提交 </button>
 </form>
</view>

小程序js代码:

data: {
  imglist:[]
 },
/**
  * form提交事件
  */
 bindFormSubmit:function(e){
   self=this
   //图片
   var imglist = self.data.imglist
   //提问内容
   var content=e.detail.value.content;
   if(content==''){
    wx.showToast({
     title: '内容不能为空',
     icon: 'loading',
     duration: 1000,
     mask:true
    })
   }
   wx.showLoading({
    title: '正在提交...',
    mask:true
   })
   //添加问题
   wx.request({
    url: 'https://xxxxxxxxxx/index.PHP?g=user&m=center&a=createwt',
    data: {
     content:content
    },
    method: 'GET', // OPTIONS, GET, HEAD, POST, PUT, DELETE, TRACE, CONNECT
    header: app.globalData.header, // 设置请求的 header
    success: function (res) {
     // success
     if(typeof(res.data)=='number'){
      if (imglist != '') {
       //开始插入图片
       for(var i=0;i<imglist.length;i++){
        //上传至服务器
        wx.uploadFile({
         url: 'https://xxxxxxxx/index.php?g=user&m=center&a=upload', //仅为示例,非真实的接口地址
         filePath: imglist[0],
         name: 'files',
         formData: {
          'wtid': res.data
         },
         header: app.globalData.header,
         success: function (res) {
          if(i>=imglist.length){
           self.setData({
            imglist:[]
           })
           wx.hideLoading();
           wx.showToast({
            title: '提问成功',
            icon: 'success',
            duration: 2000,
            mask: true
           })
           wx.navigateBack({
            delta: 1
           })
          }
         }
        })
       }
       console.log(imglist);
      }else{
       wx.hideLoading();
       wx.showToast({
        title: '提问成功',
        icon: 'success',
        duration: 2000,
        mask: true
       })
       wx.navigateBack({
        delta: 1
       })
      }
     }else{
      wx.hideLoading();
      wx.showToast({
       title: res.data,
       icon: 'loading',
       duration: 1000,
       mask: true
      })
     }
    },
    fail: function (res) {
     self.onLoad();
    }
   })
 },
 //点击选择图片
 checkimg:function(){
   console.log('点击选择图片');
   self=this
   wx.chooseImage({
    count: 9, // 默认9
    sizeType: ['original', 'compressed'], // 可以指定是原图还是压缩图,默认二者都有
    sourceType: ['album', 'camera'], // 可以指定来源是相册还是相机,默认二者都有
    success: function (res) {
     // 返回选定照片的本地文件路径列表,tempFilePath可以作为img标签的src属性显示图片
     var tempFilePaths = res.tempFilePaths
     self.setData({
      imglist:tempFilePaths
     })
    }
   })
 },
 //点击预览图片
 ylimg:function(e){
  wx.previewImage({
   current: e.target.dataset.src,
   urls: this.data.imglist // 需要预览的图片http链接列表
  })
 }

php后台代码

//图片上传

public function upload(){
if(IS_POST){
$upload = new \Think\Upload();// 实例化上传类
$upload->maxSize  =   3145728 ;// 设置附件上传大小
$upload->exts   =   array('jpg', 'gif', 'png', 'jpeg');// 设置附件上传类型
$upload->rootPath =   './Uploads/'; // 设置附件上传根目录
$upload->savePath =   ''; // 设置附件上传(子)目录
// 上传文件 
$info  =  $upload->upload();
if(!$info) {// 上传错误提示错误信息
  $this->error($upload->getError());
}else{// 上传成功 获取上传文件信息
//插入到数据库中
}
}
}

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

Javascript 相关文章推荐
javascript 必知必会之closure
Sep 21 Javascript
模仿JQuery.extend函数扩展自己对象的js代码
Dec 09 Javascript
解析JavaScript中的不可见数据类型
Dec 02 Javascript
JavaScript中setFullYear()方法的使用详解
Jun 11 Javascript
jQuery实现点击任意位置弹出层外关闭弹出层效果
Oct 19 Javascript
Angular2 PrimeNG分页模块学习
Jan 14 Javascript
React通过父组件传递类名给子组件的实现方法
Nov 13 Javascript
react 父子组件之间通讯props
Sep 08 Javascript
vue elementui form表单验证的实现
Nov 11 Javascript
快速解决layui弹窗按enter键不停弹窗的问题
Sep 18 Javascript
通过javascript实现扫雷游戏代码实例
Feb 09 Javascript
详解vue实现坐标拾取器功能示例
Nov 18 Vue.js
微信小程序 setData使用方法及常用错误解决办法
May 11 #Javascript
jQuery zTree树插件动态加载实例代码
May 11 #jQuery
微信小程序中使用javascript 回调函数
May 11 #Javascript
微信小程序上滑加载下拉刷新(onscrollLower)分批加载数据(二)
May 11 #Javascript
JS使用插件cryptojs进行加密解密数据实例
May 11 #Javascript
微信小程序上滑加载下拉刷新(onscrollLower)分批加载数据(一)
May 11 #Javascript
JS实现的四级密码强度检测功能示例
May 11 #Javascript
You might like
PHP学习之PHP表达式
2006/10/09 PHP
什么是MVC,好东西啊
2007/05/03 PHP
解析数组非数字键名引号的必要性
2013/08/09 PHP
php文件上传你必须知道的几点
2015/10/20 PHP
判断多个元素(RADIO,CHECKBOX等)是否被选择的原理说明
2009/02/18 Javascript
js Dialog 实践分享
2012/10/22 Javascript
使用jQuery实现验证上传图片的格式与大小
2014/12/03 Javascript
javascript实现在线客服效果
2015/07/15 Javascript
原生js和jQuery实现淡入淡出轮播效果
2015/12/25 Javascript
nodejs个人博客开发第六步 数据分页
2017/04/12 NodeJs
JavaScript编程设计模式之构造器模式实例分析
2017/10/25 Javascript
nodejs结合socket.io实现websocket通信功能的方法
2018/01/12 NodeJs
vue上传图片到oss的方法示例(图片带有删除功能)
2018/09/27 Javascript
vue init webpack 建vue项目报错的解决方法
2018/09/29 Javascript
新手入门js闭包学习过程解析
2019/10/08 Javascript
jquery将json转为数据字典的实例代码
2019/10/11 jQuery
关于AngularJS中几种Providers的区别总结
2020/05/17 Javascript
[03:26]回顾2015国际邀请赛中国区预选赛
2015/06/09 DOTA
Python中用Ctrl+C终止多线程程序的问题解决
2013/03/30 Python
解决windows下Sublime Text 2 运行 PyQt 不显示的方法分享
2014/06/18 Python
Python的Django框架中的Context使用
2015/07/15 Python
python 判断是否为正小数和正整数的实例
2017/07/23 Python
对Python协程之异步同步的区别详解
2019/02/19 Python
超简单的Python HTTP服务
2019/07/22 Python
python实现复制文件到指定目录
2019/10/16 Python
利用pandas将非数值数据转换成数值的方式
2019/12/18 Python
浅析Python数字类型和字符串类型的内置方法
2019/12/22 Python
TensorFlow 多元函数的极值实例
2020/02/10 Python
python读取hdfs并返回dataframe教程
2020/06/05 Python
Python爬虫之Spider类用法简单介绍
2020/08/04 Python
美国领先的奢侈手表在线零售商:WatchMaxx
2017/12/17 全球购物
机械专业毕业生自荐信
2013/11/02 职场文书
公司离职证明范本
2014/01/13 职场文书
文明教师事迹材料
2014/01/16 职场文书
个人党性剖析材料
2014/02/03 职场文书
经典祝酒词大全
2015/08/12 职场文书