微信小程序实现上传图片功能

微信小程序图片上传,供大家参考,具体内容如下

先来看一下微信小程序的api

来看一下页面效果

查看大图

wxml文件代码:

<view class="weui-cell">
    <view class="weui-cell__bd">
     <view class="weui-uploader">
      <view class="weui-uploader__hd">
       <view class="weui-uploader__title">营业执照</view>
       <view class="weui-uploader__info">{{imageList.length}}/{{count[countIndex]}}</view>
      </view>
      <view class="weui-uploader__bd">
       <view class="weui-uploader__files">
        <block wx:for="{{imageList}}" wx:for-item="image">
         <view class="weui-uploader__file">
          <image class="weui-uploader__img" src="{{image}}" data-src="{{image}}" bindtap="previewImage"></image>
         </view>
        </block>
       </view>
       <view class="weui-uploader__input-box">
        <view class="weui-uploader__input" bindtap="chooseImage"></view>
       </view>
      </view>
     </view>
  </view>
</view> 

js文件代码

chooseImage: function () {
  var that = this;
  console.log('aaaaaaaaaaaaaaaaaaaa') 

  wx.chooseImage({
   count: this.data.count[this.data.countIndex],
   success: function (res) {
    console.log('ssssssssssssssssssssssssss')
    //缓存下
    wx.showToast({
     title: '正在上传...',
     icon: 'loading',
     mask: true,
     duration: 2000,
     success: function (ress) {
      console.log('成功加载动画');
     }
    }) 

    console.log(res)
    that.setData({
     imageList: res.tempFilePaths
    })
    //获取第一张图片地址
    var filep = res.tempFilePaths[0]
    //向服务器端上传图片
    // getApp().data.servsers,这是在app.js文件里定义的后端服务器地址
    wx.uploadFile({
     url: getApp().data.servsers + '/weixin/wx_upload.do',
     filePath: filep,
     name: 'file',
     formData: {
      'user': 'test'
     },
     success: function (res) {
      console.log(res)
      console.log(res.data)
      var sss= JSON.parse(res.data)
      var dizhi = sss.dizhi;
      //输出图片地址
      console.log(dizhi);
      that.setData({
       "dizhi": dizhi
      }) 

      //do something
     }, fail: function (err) {
      console.log(err)
     }
      });
   }
  })
 },
 previewImage: function (e) {
  var current = e.target.dataset.src 

  wx.previewImage({ 

   current: current,
   urls: this.data.imageList
  })
 } 

java 后端代码:

//获取当前日期时间的string类型用于文件名防重复
  public String dates(){
     Date currentTime = new Date();
     SimpleDateFormat formatter = new SimpleDateFormat("yyyyMMddHHmmss");
     String dateString = formatter.format(currentTime);
     return dateString;
  }
  @RequestMapping("wx_upload.do")
  public void uploadPicture(HttpServletRequest request, HttpServletResponse response,PrintWriter writer) throws Exception {
    System.out.println("进入get方法!");
  //获取从前台传过来得图片
    MultipartHttpServletRequest req =(MultipartHttpServletRequest)request;
    MultipartFile multipartFile = req.getFile("file");
  //获取图片的文件类型
    String houzhu=multipartFile.getContentType();
    int one = houzhu.lastIndexOf("/");
    System.out.println(houzhu.substring((one+1),houzhu.length()));
    System.out.println(multipartFile.getName());
  //根据获取到的文件类型截取出图片后缀
    String type=houzhu.substring((one+1),houzhu.length());
    System.out.println(multipartFile.getContentType()); 

    String filename;
  // request.getRealPath获取我们项目的根地址在加上我们要保存的地址
    String realPath = request.getRealPath("/upload/wximg/");
    try {
      File dir = new File(realPath);
      if (!dir.exists()) {
        dir.mkdir();
      }
      //获取到当前的日期时间用户生成文件名防止文件名重复
      String filedata=this.dates();
    //生成一个随机数来防止文件名重复
      int x=(int)(Math.random()*1000);
      filename="zhongshang"+x+filedata;
      System.out.println(x);
    将文件的地址和生成的文件名拼在一起
      File file = new File(realPath,filename+"."+type);
      multipartFile.transferTo(file);
    //将图片在项目中的地址和isok状态储存为json格式返回给前台,由于公司项目中没有fastjson只能用这个
      JSONObject jsonObject=new JSONObject();
      jsonObject.put("isok",1);
      jsonObject.put("dizhi","/upload/wximg/"+filename+"."+type); 

      writer.write(jsonObject.toString());
    } catch (IOException e) {
      e.printStackTrace();
    } catch (IllegalStateException e) {
      e.printStackTrace();
    }
} 

来看一下之前在前端js输出的内容:

打开浏览器用我们的服务器的地址加上后台返回json的dizhi字段去访问这张图片

我们可以看到图片已经填入我们的服务器端里了,然后在打开我们服务器端项目根地址下面的/upload/wximg

到这里就大功告成了如果是多张图片上传可以在js里面根据要上传的数量循环上传。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • Android 高仿微信朋友圈拍照上传功能

    模仿微信朋友圈发布动态,输入文字支持文字多少高度自增,有一个最小输入框高度,输入文字有限制,不过这些都很easy! 1. PhotoPicker的使用 这是一个支持选择多张图片,点击图片放大,图片之间左右滑动互相切换的库,同时支持图片删除的库,效果类似微信. (1) 添加PhotoPicker的架包 (2) 使用 选择图片:安卓6.0以后需要在代码中添加读写sd卡和相机的权限 当然清单文件中也需要添加的 PhotoPicker.builder() .setPhotoCount(maxPhoto)

  • 微信上传视频文件提示(推荐)

    晚上要下班了老板发来一个任务:把一个300M左右的视频压缩到100M以内,以便在微信上发送.这倒不是难事,狸窝咱又不是没用过,开搞!!! 就是这么邪气,恰好100.18M 视频质量:低等质量,音频质量:低等质量,自定义视频尺寸:1280*720.咔咔一波操作,100.18M,这神马鬼这么巧,导出一下试试,四舍五入正好100M.上传微信试试. 文件大于100M不能上传 试试还真不行,要说也是,程序的规则是很严格的,要求不能大于100M,多一个bit就不行.本来想着立马交差,那就再调调! 可别看这0

  • 微信小程序基于腾讯云对象存储的图片上传功能

    在使用腾讯云对象存储之前,公司一直使用的是传统的FTP的上传模式,而随着用户量的不断增加,FTP所暴露出来的问题也越来越多,1.传输效率低,上传速度慢.2.时常有上传其他文件来攻击服务器,安全上得不到保障.所以我们在经过慎重考虑觉得使用第三方的云存储服务. 在最开始的时候我们在腾讯云与阿里云中选择,最终我们选择腾讯云,腾讯云在文件上传用时方面的性能比较突出,文件越大表现越好:在下载用时方面表现略优于阿里云:文件删除用时方面总体速度略逊于,但在不同大小文件删除用时上都比较稳定.当然这与我们主要用于

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

    上传图片到服务器: 1.先在前端写一个选择图片的区域来触发wx.chooseImage接口并用wx.setStorage接口把图片路径存起来. -wxml <view class="shangchuan" bindtap="choose"> <image style="width:100%;height:100%;" src="{{tempFilePaths}}"></image> <

  • Android中使用GridView实现仿微信图片上传功能(附源代码)

    由于工作要求最近在使用GridView完成图片的批量上传功能,我的例子当中包含仿微信图片上传.拍照.本地选择.相片裁剪等功能,如果有需要的朋友可以看一下,希望我的实际经验能对您有所帮助. 直接上图,下面的图片就是点击"加号"后弹出的对话框,通过对话框可以根据自己需求进行相片选择. 项目结构: 下面直接上代码. 整体的布局文件activity_main.xml <LinearLayout xmlns:android="http://schemas.android.com/

  • 微信小程序 上传头像的实例详解

    微信小程序 上传头像的实例详解 最近在做微信小程序上传头像和上传照片功能就随手写一下代码: 上传头像html: <view class="edit-list"> <text class="list-name list-first">头像</text> <view class="edit-righr-bar"> <image class="head-portrait" src

  • 微信小程序实现图片上传功能实例(前端+PHP后端)

    前言 几乎每个程序都需要用到图片.下面就来给大家介绍前端+PHP后端实现微信小程序实现图片上传功能,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧. 方法如下: 一.wxml文件 <text>上传图片</text> <view> <button bindtap="uploadimg">点击选择上传图</button> </view> <image src='{{source}}' style=

  • 微信小程序实现图片上传、删除和预览功能的方法

    本文实例讲述了微信小程序实现图片上传.删除和预览功能的方法.分享给大家供大家参考,具体如下: 这里主要介绍一下微信小程序的图片上传图片删除和图片预览 布局 <view class="img-v"> <view class="img" wx:for="{{imgs}}" wx:for-item="item" wx:key="*this"> <image src="{{i

  • 微信小程序实现上传图片功能

    微信小程序图片上传,供大家参考,具体内容如下 先来看一下微信小程序的api 来看一下页面效果 查看大图 wxml文件代码: <view class="weui-cell"> <view class="weui-cell__bd"> <view class="weui-uploader"> <view class="weui-uploader__hd"> <view clas

  • 微信小程序实现上传图片小功能

    本文实例为大家分享了微信小程序实现上传图片的具体代码,供大家参考,具体内容如下 用到的apiwx.chooseMedia(); 用于拍摄或从手机相册中选择图片或视频 功能:点击上传图片,可多选,或者拍照上传:点击图片放大查看:长按图片删除 效果图 json里面引用weui的组件uploader {   "navigationBarTitleText": "评价工单",   "usingComponents": {     "mp-upl

  • 微信小程序实现上传图片的功能

    本文实例为大家分享了微信小程序实现上传图片的具体代码,供大家参考,具体内容如下 效果图 WXML <view class="img-wrap"> <view class="txt">上传图片</view> <view class="imglist"> <view class="item" wx:for="{{imgs}}" wx:key="it

  • 微信小程序人脸识别功能代码实例

    前几天偶然看见一个人脸识别的小程序demo,觉得很有趣下载下来想玩玩,结果只是一个框架而已用不了的,花了点时间完善一下 吐槽一下wx.uploadFile这个接口,真是个大坑,最开始调用时候,我以为它和同期的wx.downloadFile一样,只需要填入必须的参数就可以用,结果还是要配合后台php的 首先,upload这个接口的url和request一样指的是php的路径,而不是download一样文件路径 其次,我在最开始一直没弄懂这个"name"到底应该填什么,上传功能不好用我一直

  • 微信小程序实现上传图片

    本文实例为大家分享了微信小程序实现上传图片的具体代码,供大家参考,具体内容如下 //wxml <button class='button' bingtap="uploadSomeMsg">上传</button>               <view class="uploadImgBox">             <view class='smallImgBox'>               <block

  • 微信小程序 在线支付功能的实现

    微信小程序 在线支付功能 最近需要在微信小程序中用到在线支付功能,于是看了一下官方的文档,发现要在小程序里实现微信支付还是很方便的,如果你以前开发过服务号下的微信支付,那么你会发现其实小程序里的微信支付和服务号里的开发过程如出一辙,下面我就具体说一下小程序里微信支付的开发流程和注意点. 1.开通微信支付和微信商户号 这个过程就和开通服务号的微信支付过程一样,没有什么可以说的. 2.获得用户的openid 首页我们需要在小程序的客户端js中获取当前用户的openid,通过调用wx.login方法可

  • 微信小程序 五星评价功能的实现

    微信小程序 五星评价功能 话不多说,我们来看一下效果图: 要实现的效果:点击到第几颗星,就要显示到第几颗星, 接下来直接查看源码: <view class="l-evalbox row"> <text class="l-evaltxt">满意度:</text> <view class="l-evalist flex-1" bindtap="chooseicon"> <ico

  • Android中微信小程序支付倒计时功能

    看效果 由于web 经验弱爆- -  一开始我的思路是找事件,但是看了半天API 基本都是点击触摸,通过物理触发- - 我居然忽略了生命周期,生命周期+线程不就完全OK吗- 事实证明,线程还是王道啊,一开始就应该这么搞嘛- 度娘上面也看了很多都是用js写的,but,可能刚做没几天吧,我对js与微信小程序掌握还不够熟练 思路: onLoad:function(options)调用倒计时方法函数 定义线程进行数据动态现实 1. 日期转化成毫秒 2.定义线程动态显示 3.渲染倒计时 1.毫秒转成固定格

  • 微信小程序列表渲染功能之列表下拉刷新及上拉加载的实现方法分析

    本文实例讲述了微信小程序列表渲染功能之列表下拉刷新及上拉加载的实现方法.分享给大家供大家参考,具体如下: 微信小程序为2017年1月9日打下了一个特殊的标签,迅速刷爆了网络和朋友圈,最近我也写了一个demo程序体验一把.微信小程序和vuejs有些像,都是数据驱动视图&单向数据绑定,而其体验要比H5页面好很多,这得益于微信环境的支持以及首次运行时同时加载所有页面的处理.本文将分享微信小程序列表的下拉刷新和上划加载的实践. 效果图 首先来看看程序效果图,以下四张图从左至右依次是:下来刷新动画.下拉刷

  • 微信小程序显示下拉列表功能【附源码下载】

    本文实例讲述了微信小程序显示下拉列表功能.分享给大家供大家参考,具体如下: 1.效果展示 2.关键代码 app.json文件: { "pages":[ "views/views", "views/navigators/navigator1/navigator1", "views/navigators/navigator2/navigator2", "views/navigators/navigator3/naviga

随机推荐