微信小程序图片选择、上传到服务器、预览(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版)
May 03 Javascript
jquery多行滚动/向左或向上滚动/响应鼠标实现思路及代码
Jan 23 Javascript
把input初始值不写value的具体实现方法
Jul 04 Javascript
jQuery中focus事件用法实例
Dec 26 Javascript
AngularJS下对数组的对比分析
Aug 24 Javascript
更靠谱的H5横竖屏检测方法(js代码)
Sep 13 Javascript
vue子组件使用自定义事件向父组件传递数据
May 27 Javascript
如何以Angular的姿势打开Font-Awesome详解
Apr 22 Javascript
vue实现点击选中,其他的不选中方法
Sep 05 Javascript
关于AngularJS中ng-repeat不更新视图的解决方法
Sep 30 Javascript
vue-cli 为项目设置别名的方法
Oct 15 Javascript
Javascript实现打鼓效果
Jan 29 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
《DOTA3》开发工作已经开始 《DOTA3》将代替《DOTA2》
2021/03/06 DOTA
shopex主机报错误请求解决方案(No such file or directory)
2011/12/27 PHP
有关于PHP中常见数据类型的汇总分享
2014/01/06 PHP
php修改上传图片尺寸的方法
2015/04/14 PHP
ThinkPHP防止重复提交表单的方法实例分析
2018/05/10 PHP
php模拟post提交请求调用接口示例解析
2020/08/07 PHP
css动画效果之animation的常用样式
2021/03/09 HTML / CSS
项目实践之javascript技巧
2007/12/06 Javascript
实现web打印的各种方法介绍及实现代码
2013/01/09 Javascript
JQuery入门——用bind方法绑定事件处理函数应用介绍
2013/02/05 Javascript
给js文件传参数(详解)
2014/07/13 Javascript
充分发挥Node.js程序性能的一些方法介绍
2015/06/23 Javascript
AngularJS通过$sce输出html的方法
2016/09/22 Javascript
js转html实体的方法
2016/09/27 Javascript
JavaScript下拉菜单功能实例代码
2017/03/01 Javascript
使用vue.js编写蓝色拼图小游戏
2017/03/17 Javascript
JS实现table表格内针对某列内容进行即时搜索筛选功能
2018/05/11 Javascript
mapboxgl区划标签避让不遮盖实现的代码详解
2020/07/01 Javascript
[42:48]完美世界DOTA2联赛PWL S3 Magma vs INK ICE 第二场 12.11
2020/12/16 DOTA
Python中请使用isinstance()判断变量类型
2014/08/25 Python
详解使用 pyenv 管理多个版本 python 环境
2017/10/19 Python
浅谈关于Python3中venv虚拟环境
2018/08/01 Python
在pycharm上mongodb配置及可视化设置方法
2018/11/30 Python
wxPython实现绘图小例子
2019/11/19 Python
tensorflow入门:TFRecordDataset变长数据的batch读取详解
2020/01/20 Python
解决Python中导入自己写的类,被划红线,但不影响执行的问题
2020/07/13 Python
利用Python将图片中扭曲矩形的复原
2020/09/07 Python
Python使用内置函数setattr设置对象的属性值
2020/10/16 Python
一个非常简单好用的Python图形界面库(PysimpleGUI)
2020/12/28 Python
里程积分管理买卖交换平台:Points.com
2017/01/13 全球购物
好的自荐信的要求
2013/10/30 职场文书
善意的谎言事例
2014/02/15 职场文书
内衣营销方案
2014/03/15 职场文书
村官个人总结范文
2015/03/03 职场文书
2019年最新借条范本!
2019/07/08 职场文书
Go语言测试库testify使用学习
2022/07/23 Golang