微信小程序上传图片到服务器实例

这一篇主要说头像 上传,以及修改保存的功能。本章节主要用的知识点有

1. wx.chooseImage 从本地相册选择图片或使用相机拍照。

2.wx.uploadFile 将本地资源上传到服务器.

3. 修改原来的小程序头像并保存,调用后台接口修改操作

 第一步:我们要获取本地图片,官方文档:https://developers.weixin.qq.com/miniprogram/dev/api/media-picture.html#wxchooseimageobject

我这里也贴出来了,不够详细可以去官网看。

1、选择图片接口

wx.chooseImage(OBJECT) 从本地相册选择图片或使用相机拍照。

OBJECT参数说明:

参数 类型 必填 说明
count Number 最多可以选择的图片张数,默认9
sizeType StringArray original 原图,compressed 压缩图,默认二者都有
sourceType StringArray album 从相册选图,camera 使用相机,默认二者都有
success Function 成功则返回图片的本地文件路径列表 tempFilePaths
fail Function 接口调用失败的回调函数
complete Function
接口调用结束的回调函数(调用成功、失败都会执行)

success返回参数说明:

参数 类型 说明 最低版本
tempFilePaths StringArray 图片的本地文件路径列表  
tempFiles ObjectArray 图片的本地文件列表,每一项是一个 File 对象 1.2.0

我这里先贴官方是例子出来。

wx.chooseImage({
  count: 1, // 默认9
  sizeType: [‘original‘, ‘compressed‘], // 可以指定是原图还是压缩图,默认二者都有
  sourceType: [‘album‘, ‘camera‘], // 可以指定来源是相册还是相机,默认二者都有
  success: function (res) {
    // 返回选定照片的本地文件路径列表,tempFilePath可以作为img标签的src属性显示图片
    var tempFilePaths = res.tempFilePaths
  }
})

第二步:

2、上传图片接口 wx.uploadFile(OBJECT)

将本地资源上传到开发者服务器。我们通过 wx.chooseImage 等接口获取到一个本地资源的临时文件路径后,可通过此接口将本地资源上传到指定服务器。客户端发起一个 HTTPS POST 请求,其中content-type 为multipart/form-data 。

OBJECT参数说明:

参数 类型 必填 说明
url String 开发者服务器 url
filePath String 要上传文件资源的路径
name String 文件对应的 key , 开发者在服务器端通过这个 key 可以获取到文件二进制内容
header Object HTTP 请求 Header, header 中不能设置 Referer
formData Object HTTP 请求中其他额外的 form data
success Function 接口调用成功的回调函数
fail Function 接口调用失败的回调函数
complete Function 接口调用结束的回调函数(调用成功、失败都会执行)

success返回参数说明:

参数 类型 说明
data String 开发者服务器返回的数据
statusCode Number 开发者服务器返回的 HTTP 状态码

官方实例代码:

wx.chooseImage({
  success: function(res) {
    var tempFilePaths = res.tempFilePaths
    wx.uploadFile({
      url: ‘https://example.weixin.qq.com/upload‘, //仅为示例,非真实的接口地址
      filePath: tempFilePaths[0],
      name: ‘file‘,
      formData:{
        ‘user‘: ‘test‘
      },
      success: function(res){
        var data = res.data
        //do something
      }
    })
  }
})

是否看到这里对选择图片和上传的接口了解很多,

第三步:代码实现

接下来这里就是真正的操作代码,为了大家方便看,我这里都注释了代码:

没修改之前。                                                           修改后并保存数据库

这里的样式自已调

<view class="my-item" style=‘height:60px;line-height:60px;margin-top:10px‘ bindtap="changeAvatar">
  <text>头像</text>
  <view class="language">
  <image  class="userinfo-avatar" src="{{user.avatar}}" background-size="cover"></image>
</view>

js模块,

注意:

wx.uploadFile自已有一个this,我们格外定义的var _this = this 到时候赋值的时候把this带进来就OK了。

 //点击图片选择手机相册或者电脑本地图片
  changeAvatar: function(e) {
    var _this = this  
    wx.chooseImage({
      count: 1,// 默认9
      sizeType: [‘original‘, ‘compressed‘],// 可以指定是原图还是压缩图,默认二者都有
      sourceType: [‘album‘, ‘camera‘],// 可以指定来源是相册还是相机,默认二者都有
      success: function(res) {
         // 返回选定照片的本地文件路径列表,tempFilePath可以作为img标签的src属性显示图片
        var tempFilePaths = res.tempFilePaths;
        //这里是上传操作
        wx.uploadFile({
          url: getApp().globalData.clientUrl + ‘/uploadAvatarUrl‘, //里面填写你的上传图片服务器API接口的路径
          filePath: tempFilePaths[0],//要上传文件资源的路径 String类型
          name: ‘avatar‘,//按个人情况修改,文件对应的 key,开发者在服务器端通过这个 key 可以获取到文件二进制内容,(后台接口规定的关于图片的请求参数)
          header: {
            "Content-Type": "multipart/form-data"//记得设置
          },
          formData: {
               //和服务器约定的token, 一般也可以放在header中
            ‘session_token‘: wx.getStorageSync(‘session_token‘)
          },
          success: function(res) {
            //当调用uploadFile成功之后,再次调用后台修改的操作,这样才真正做了修改头像
            if (res.statusCode = 200) {
              // var data = res.data
              // var statusCode = res.statusCode
              // console.log("返回值1" + data);
              // console.log("返回值2" + statusCode)
              //这里调用后台的修改操作, tempFilePaths[0],是上面uploadFile上传成功,然后赋值到修改这里。
              wx.request({
                url: getApp().globalData.clientUrl + ‘/update?avatar=‘ + tempFilePaths[0], //真正修改操作,填写你们修改的API
                header: {
                  ‘content-type‘: ‘application/json‘,
                },
                method: ‘POST‘,
                success: function(res) {
                  if (res.data.code == 200) {
                    wx.showToast({
                      title: ‘修改成功‘,
                      icon: ‘success‘,
                      duration: 2500
                    })
                    //wx.uploadFile自已有一个this,我们刚才上面定义的var _this = this 把this带进来
                    _this.setData({
                      "user.avatar": tempFilePaths[0]
                    });
                  }
                },
              })
            }
          }
        })
      }
    })
  },

这样就实现了修改小程序的头像了,希望帮到正在奋斗的你,遇见更好的你。

这篇文章哪里还不足的话,希望路过的大神指点指点小弟。

原文地址:https://www.cnblogs.com/LCH-M/p/9420482.html

时间: 2024-11-05 03:05:40

微信小程序上传图片到服务器实例的相关文章

【小程序】微信小程序实现各种特效实例

写在前面 最近在负责一个微信小程序的前端以及前后端接口的对接的项目,整体上所有页面的布局我都已经搭建完成,里面有一些常用的特效,总结一下,希望对大家和我都能有所帮助 实例1:滚动tab选项卡 先看一下效果图吧,能够实现点击切换,tab菜单部分可以实现左右滚动 好了,看一下我的源码吧!<喜欢的话拿走不谢哟> 1.wxml <!-- tab header --> <scroll-view scroll-x="true" class="tab-h&qu

微信小程序上传图片到COS腾讯云

功能需求:用户可以在评论中上传图片,图片保存到腾讯云COS上. 实现方法,微信小程序需要往后台传一个代表文件的参数file代表文件,借助MultipartFile获得文件的路径和文件名等信息. 关键实现代码: @RequestMapping(value = "/plugins/fileServer/fileservice/sales/admin", method = RequestMethod.POST) void postAdmin(@RequestParam(value = &qu

微信小程序上传图片(前端+PHP后端)

一.wxml文件 <text>上传图片</text> <view> <button bindtap="uploadimg">点击选择上传图</button> </view> <image src='{{source}}' style='width:600rpx; height:600rpx' /> 二.js文件 Page({ /** * 页面的初始数据 */ data: { //初始化为空 source

微信小程序上传图片单张

wxml代码 <view> <image src='{{source}}' bindtap="uploadimg" style='width:200rpx;height:200rpx;background:red;'>点击选择上传图</image> </view> js代码 var app = getApp() Page({ /** * 页面的初始数据 */ data: { //初始化为空 source: '' }, /** * 上传图片

微信小程序上传图片

话不多说,直接上码. <view class="section"> <!--放一张图片或按钮 点击时去选择图片--> <image class='ph' src='{{photos}}' bindtap='touchphoto' mode='aspectFit'> </image> <!--循环显示选中的图片--> <block wx:for="{{pics}}" wx:for-index="

微信小程序 - 上传图片组件

使用了ES8的async/await,注意正确导入“regenerate.js”的路径,使用说明在components/up-img/index.js 点击下载:图片上传组件 原文地址:https://www.cnblogs.com/cisum/p/10199507.html

微信小程序 上传图片

效果图  如上,js  如下,在页面循环图片就可以 /** * 选择图片 */ uploadImgAdd: function(e) { var imgs = this.data.imgs; wx.chooseImage({ sizeType: ['original', 'compressed'], sourceType: ['album', 'camera'], success: (res) => { for (let j in res.tempFilePaths){ if (res.tempF

微信小程序--图片相关问题合辑

图片上传相关文章 微信小程序多张图片上传功能 微信小程序开发(二)图片上传 微信小程序上传一或多张图片 微信小程序实现选择图片九宫格带预览 ETL:微信小程序之图片上传 微信小程序wx.previewImage预览图片 微信小程序之预览图片 小程序开发:上传图片到腾讯云 .NET开发微信小程序-上传图片到服务器 微信小程序本地图片处理--按屏幕尺寸插入图片 [微信小程序]上传图片到阿里云OSS Python Flask小程序文件(图片)上传技巧 小程序图片上传阿里OSS使用方法 微信小程序问题汇

微信小程序学习指南

作者:初雪链接:https://www.zhihu.com/question/50907897/answer/128494332来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处. 微信小程序正式公测, 张小龙全面阐述小程序,定档1月9日上线(附90分钟演讲全文) ... 前言:新人第一坑,跳坑指南:修改后,必须保存:ctrl+S: 1:官方工具:https://mp.weixin.qq.com/debug/w ... tml?t=1476434678461 2:简易教