微信小程序图片选择、上传到服务器、预览(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 相关文章推荐
js中的onchange和onpropertychange (onchange无效的解决方法)
Mar 08 Javascript
js监听鼠标点击和键盘点击事件并自动跳转页面
Sep 24 Javascript
最新最热最实用的15个jQuery插件汇总
Jul 05 Javascript
全面解析Bootstrap中nav、collapse的使用方法
May 22 Javascript
Angular.JS利用ng-disabled属性和ng-model实现禁用button效果
Apr 05 Javascript
VueJs使用Amaze ui调整列表和内容页面
Nov 30 Javascript
详解Vue CLI3 多页应用实践和源码设计
Aug 30 Javascript
TypeScript基础入门教程之三重斜线指令详解
Oct 22 Javascript
webpack 开发和生产并行设置的方法
Nov 08 Javascript
利用es6 new.target来对模拟抽象类的方法
May 10 Javascript
JavaScript实现星级评价效果
May 17 Javascript
node.js实现简单的压缩/解压缩功能示例
Nov 05 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数据库操作面向对象的优点
2006/10/09 PHP
PHP使用SOAP调用.net的WebService数据
2013/11/12 PHP
php实现的CSS更新类实例
2014/09/22 PHP
php实现中文转数字
2016/02/18 PHP
PHP实现页面静态化的超简单方法
2016/09/06 PHP
php curl 模拟登录并获取数据实例详解
2016/12/22 PHP
thinkPHP5框架实现基于ajax的分页功能示例
2018/06/12 PHP
php和asp语法上的区别总结
2019/05/12 PHP
Javascript 中介者模式实例
2009/12/16 Javascript
一个简单的js鼠标划过切换效果
2010/06/30 Javascript
前端开发的开始---基于面向对象的Ajax类
2010/09/17 Javascript
将form表单中的元素转换成对象的方法适用表单提交
2014/05/02 Javascript
JavaScript中使用Object.prototype.toString判断是否为数组
2015/04/01 Javascript
JS中from 表单序列化提交的代码
2017/01/20 Javascript
js学习总结_选项卡封装(实例讲解)
2017/07/13 Javascript
input输入框内容实时监测(附代码)
2017/08/15 Javascript
如何去除vue项目中的#及其ie9兼容性
2018/01/11 Javascript
详解extract-text-webpack-plugin 的使用及安装
2018/06/12 Javascript
js实现可爱的气泡特效
2020/09/05 Javascript
pycharm 使用心得(八)如何调用另一文件中的函数
2014/06/06 Python
Python中字典和JSON互转操作实例
2015/01/19 Python
Python中实现结构相似的函数调用方法
2015/03/10 Python
利用python-pypcap抓取带VLAN标签的数据包方法
2019/07/23 Python
Python利用PyExecJS库执行JS函数的案例分析
2019/12/18 Python
canvas实现手机的手势解锁的步骤详细
2020/03/16 HTML / CSS
开业主持词
2014/03/21 职场文书
教职工代表大会主持词
2014/04/01 职场文书
《望庐山瀑布》教学反思
2014/04/22 职场文书
体育活动总结
2015/02/04 职场文书
初中生思想道德自我评价
2015/03/09 职场文书
2015年大学生社会实践评语
2015/03/26 职场文书
2015年街道办事处团委工作总结
2015/10/14 职场文书
领导干部学习心得体会
2016/01/23 职场文书
宪法宣传标语100条
2019/10/15 职场文书
分享五个Node.js开发的优秀实践 
2022/04/07 NodeJs