微信小程序图片选择、上传到服务器、预览(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 StringBuilder类实现
Dec 22 Javascript
javascript调试说明
Jun 07 Javascript
一样的table?不一样的table(可编辑状态table)
Sep 19 Javascript
JS控制静态页面传递参数并获取参数应用
Aug 10 Javascript
JS中绑定事件顺序(事件冒泡与事件捕获区别)
Jan 24 Javascript
bootstrapValidator.min.js表单验证插件
Feb 09 Javascript
AngularJS改变元素显示状态
Apr 20 Javascript
详谈for循环里面的break和continue语句
Jul 20 Javascript
AngularJS 实现购物车全选反选功能
Oct 24 Javascript
JQuery选中select组件被选中的值方法
Mar 08 jQuery
详解超简单的react服务器渲染(ssr)入坑指南
Feb 28 Javascript
JS中如何优雅的使用async await详解
Oct 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
五款常用mysql slow log分析工具的比较分析
2011/05/22 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(十二)
2014/06/25 PHP
Windows下的PHP 5.3.x安装 Zend Guard Loader教程
2014/09/06 PHP
php实现将wav文件转换成图像文件并在页面中显示的方法
2015/04/21 PHP
再推荐十款免费的php开发工具
2015/11/09 PHP
jQuery 跨域访问问题解决方法
2009/12/02 Javascript
HTML复选框和单选框 checkbox和radio事件介绍
2012/12/12 Javascript
JS 日期比较大小的简单实例
2014/01/13 Javascript
jquery制作弹窗提示窗口代码分享
2014/03/02 Javascript
jQuery的bind()方法使用详解
2015/07/15 Javascript
javascript实现动态标签云
2015/10/16 Javascript
js计算文本框输入的字符数
2015/10/23 Javascript
基于jquery实现图片上传本地预览功能
2016/01/08 Javascript
JavaScript 对象字面量讲解
2016/06/06 Javascript
老生常谈JavaScript数组的用法
2016/06/10 Javascript
jQuery中DOM节点删除之empty与remove
2017/01/20 Javascript
vue.js声明式渲染和条件与循环基础知识
2017/07/31 Javascript
vue调用本地摄像头实现拍照功能
2020/08/14 Javascript
[01:58]DOTA2上海特级锦标赛现场采访:RTZ这个ID到底好不好
2016/03/25 DOTA
Python代理抓取并验证使用多线程实现
2013/05/03 Python
跟老齐学Python之重回函数
2014/10/10 Python
Python中最常用的操作列表的几种方法归纳
2015/04/24 Python
python 实现将文件或文件夹用相对路径打包为 tar.gz 文件的方法
2019/06/10 Python
Python实现非正太分布的异常值检测方式
2019/12/09 Python
浅析Python 字符编码与文件处理
2020/09/24 Python
html5 postMessage前端跨域并前端监听的方法示例
2018/11/01 HTML / CSS
Html5 页面适配iPhoneX(就是那么简单)
2019/09/05 HTML / CSS
全球领先的全景影像品牌:Insta360
2019/08/21 全球购物
String、StringBuffer、StringBuilder有区别
2015/09/18 面试题
水产养殖学应届生求职信
2013/09/29 职场文书
岗位廉洁从业承诺书
2014/03/28 职场文书
小学语文课后反思精选
2014/04/25 职场文书
十月围城观后感
2015/06/08 职场文书
圣诞晚会主持词
2015/07/01 职场文书
新郎父亲婚礼致辞
2015/07/27 职场文书
《少年闰土》教学反思
2016/02/18 职场文书