微信小程序图片选择、上传到服务器、预览(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 相关文章推荐
jQuery 位置插件
Dec 25 Javascript
jQuery学习笔记(3)--用jquery(插件)实现多选项卡功能
Apr 08 Javascript
按钮接受回车事件的三种实现方法
Jun 06 Javascript
jQuery实现美观的多级动画效果菜单代码
Sep 06 Javascript
利用vue-router实现二级菜单内容转换
Nov 30 Javascript
angular动态删除ng-repaeat添加的dom节点的方法
Jul 20 Javascript
vue父组件通过props如何向子组件传递方法详解
Aug 16 Javascript
layer.open 按钮的点击事件关闭方法
Aug 17 Javascript
vue移动端html5页面根据屏幕适配的四种解决方法
Oct 19 Javascript
在vue-cli3.0 中使用预处理器 (Sass/Less/Stylus) 配置全局变量操作
Aug 10 Javascript
JavaScript中展开运算符及应用的实例代码
Jan 14 Javascript
教你部署vue项目到docker
Apr 05 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留言本模块主要功能的函数说明(代码可实现)
2013/06/25 PHP
PHP的伪随机数与真随机数详解
2015/05/27 PHP
php计算整个目录大小的方法
2015/06/01 PHP
编写PHP脚本来实现WordPress中评论分页的功能
2015/12/10 PHP
浅谈Coreseek、Sphinx-for-chinaese、Sphinx+Scws的区别
2016/12/15 PHP
thinkPHP+ajax实现统计页面pv浏览量的方法
2017/03/15 PHP
document.documentElement的一些使用技巧
2013/04/18 Javascript
Array 重排序方法和操作方法的简单实例
2014/01/24 Javascript
jquery ui resize 中border-box的bug修正
2015/04/26 Javascript
js点击列表文字对应该行显示背景颜色的实现代码
2015/08/05 Javascript
js实现跨域的几种方法汇总(图片ping、JSONP和CORS)
2015/10/25 Javascript
Bootstrap表单Form全面解析
2016/06/13 Javascript
D3.js实现文本的换行详解
2016/10/14 Javascript
JS实现页面打印功能
2017/03/16 Javascript
Vue.js实现在下拉列表区域外点击即可关闭下拉列表的功能(自定义下拉列表)
2017/05/30 Javascript
浅谈React Event实现原理
2018/09/20 Javascript
微信小程序报错: thirdScriptError的错误问题
2020/06/19 Javascript
Vue基于localStorage存储信息代码实例
2020/11/16 Javascript
python 字符串转列表 list 出现\ufeff的解决方法
2017/06/22 Python
基于Python实现大文件分割和命名脚本过程解析
2019/09/29 Python
python3连接mysql获取ansible动态inventory脚本
2020/01/19 Python
python里的单引号和双引号的有什么作用
2020/06/17 Python
keras做CNN的训练误差loss的下降操作
2020/06/22 Python
基于CSS3 animation动画属性实现轮播图效果
2017/09/12 HTML / CSS
全球酒店预订网站:Hotels.com
2016/08/10 全球购物
世界排名第一的万圣节服装店:Spirit Halloween
2018/10/16 全球购物
博士生入学考试推荐信
2013/11/17 职场文书
房地产广告策划方案
2014/05/15 职场文书
羽毛球社团活动总结
2014/06/27 职场文书
2014党员学习兰辉先进事迹思想汇报
2014/09/17 职场文书
2014年工程部工作总结
2014/11/25 职场文书
舞蹈社团活动总结
2015/05/07 职场文书
无婚姻登记记录证明
2015/06/18 职场文书
vue中三级导航的菜单权限控制
2021/03/31 Vue.js
Windows中Redis安装配置流程并实现远程访问功能
2021/06/07 Redis
详解Mysql数据库平滑扩容解决高并发和大数据量问题
2022/05/25 MySQL