微信小程序图片选择、上传到服务器、预览(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用户自定义类的类名称的代码
Mar 08 Javascript
Document 对象的常用方法
Jul 31 Javascript
让FireFox支持innerText的实现代码
Dec 01 Javascript
基于jquery点击自以外任意处,关闭自身的代码
Feb 10 Javascript
RequireJS多页面应用实例分析
Jun 29 Javascript
JavaScript鼠标事件,点击鼠标右键,弹出div的简单实例
Aug 03 Javascript
AngularJS教程之简单应用程序示例
Aug 16 Javascript
vue.js移动端app实战1:初始配置详解
Jul 24 Javascript
vue的事件绑定与方法详解
Aug 16 Javascript
解决mpvue + vuex 开发微信小程序vuex辅助函数mapState、mapGetters不可用问题
Aug 03 Javascript
javascript实现简易的计算器
Jan 17 Javascript
JavaScript最完整的深浅拷贝实现方式详解
Feb 28 Javascript
微信小程序 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数据库解决方案分析介绍
2015/09/24 PHP
Yii2框架实现数据库常用操作总结
2017/02/08 PHP
PHP 实现页面静态化的几种方法
2017/07/23 PHP
PHP执行普通shell命令流程解析
2020/08/24 PHP
解决FLASH需要点击激活的代码
2006/12/20 Javascript
jQuery 图片切换插件(代码比较少)
2012/05/07 Javascript
script标签属性用type还是language
2015/01/21 Javascript
Bootstrap实现登录校验表单(带验证码)
2016/06/23 Javascript
jQuery Easyui datagrid editor为combobox时指定数据源实例
2016/12/19 Javascript
JavaScript实现弹出广告功能
2017/03/30 Javascript
vue.js模仿京东省市区三级联动的选择组件实例代码
2017/11/22 Javascript
vue-content-loader内容加载器的使用方法
2018/08/05 Javascript
js实现固定区域内的不重叠随机圆
2019/10/24 Javascript
基于vue实现简易打地鼠游戏
2020/08/21 Javascript
微信小游戏中three.js离屏画布的示例代码
2020/10/12 Javascript
[00:43]DOTA2小紫本全民票选福利PA至宝全方位展示
2014/11/25 DOTA
[42:36]DOTA2上海特级锦标赛B组败者赛 VG VS Spirit第二局
2016/02/26 DOTA
Python中绑定与未绑定的类方法用法分析
2016/04/29 Python
深入理解NumPy简明教程---数组1
2016/12/17 Python
Python基于生成器迭代实现的八皇后问题示例
2018/05/23 Python
python和shell获取文本内容的方法
2018/06/05 Python
利用python画出折线图
2018/07/26 Python
Python实现定时执行任务的三种方式简单示例
2019/03/30 Python
Python 线程池用法简单示例
2019/10/02 Python
Python 动态变量名定义与调用方法
2020/02/09 Python
Python脚本去除文件的只读性操作
2020/03/05 Python
c++工程师面试问题
2013/08/04 面试题
Static Nested Class 和 Inner Class的不同
2013/11/28 面试题
工地安全标语
2014/06/07 职场文书
公司演讲稿开场白
2014/08/25 职场文书
软件测试专业推荐信
2014/09/18 职场文书
党员国庆节演讲稿范文2014
2014/09/21 职场文书
勇敢的心观后感
2015/06/09 职场文书
七年级作文之游记
2019/12/11 职场文书
React Hook用法示例详解(6个常见hook)
2021/04/28 Javascript
新手必备之MySQL msi版本下载安装图文详细教程
2021/05/21 MySQL