话不多说,直接上码。

<view class="section">
<!--放一张图片或按钮 点击时去选择图片-->
<image class='ph' src='{{photos}}' bindtap='touchphoto' mode='aspectFit'> </image>
<!--循环显示选中的图片-->
<block wx:for="{{pics}}" wx:for-index="index">
<view class="item" data-index="{{index}}" >
<image class='ph' src='{{item}}' bindtap='touchphoto' mode='aspectFit'> </image>
</view>
</block>
</view>
<button bindtap='sendFile'>上传</button>

js

// 在需要使用的js文件中,导入js
var util = require('../../../utils/util.js');
var app = getApp(); Page({
data: {
pics:[],//存放选中图片数组
photos: "../../../img/camera.jpg",//默认点击图片
fileNames:""//
},
touchphoto: function (e) {//点击选择图片事件
var that = this
var pic = this.data.pics;
wx.chooseImage({
count: 9 - pic.length, //图片数量 默认9
sizeType: ['original', 'compressed'], // 可以指定是原图还是压缩图,默认二者都有
sourceType: ['album', 'camera'], // 可以指定来源是相册还是相机,默认二者都有
success: function (res) {
// 返回选定照片的本地文件路径列表,tempFilePath可以作为img标签的src属性显示图片
var tempFilePaths = res.tempFilePaths;
pic = pic.concat(tempFilePaths);
that.setData({
pics:pic,        //如果上传单张图片的话可以取消这个
       photos:tempFilePaths //如果上传单张图片的话,可以用这个
})
}
})
},
sendFile: function (e) {//多图片上传
var paths = this.data.pics;//获取上传数组
for (var index in paths){//循环这个数组
var fileP = "";
fileP = fileP + paths[index];//获取当前循环到的图片
wx.uploadFile({
url: app.globalData.API_URL + '/uploadFileWX',
filePath: fileP,
name: 'file',//名称根据自己情况取
formData: {//除了要上传的附件外。其他额外要传的参数
'user': 'admin'
},
success: function (res) {//上传成功方法
wx.showToast({
title: '上传成功',
icon: 'success',
duration: 2000
})
}
})
}
},
onLoad: function () { }
})

css样式

.ph{
width: 200rpx;
height: 200rpx;
border: 1px solid #909090;
margin-left:14%;
border-radius: 20rpx;
}
.ph1{
width: 200rpx;
height: 200rpx;
border: 1px solid #909090;
margin-left:5%;
float: left;
border-radius: 20rpx;
margin-top: 5%;
margin-bottom: 5%;
} .btn{
background: #335c8f;
color: #fff;
margin-left:40rpx;
margin-right: 40rpx;
width: 90%;
}

java后台代码

  @RequestMapping(value = "/uploadFile", method = RequestMethod.POST)
public @ResponseBody Object uploadFile(HttpServletRequest request, HttpServletResponse response,
@RequestParam(value = "file", required = false) MultipartFile file,
@RequestParam(value = "user") String user,Model model) {
try {
request.setCharacterEncoding("UTF-8");
        
if (!file.isEmpty()) {
System.out.println("成功获取照片");
String fileName = file.getOriginalFilename();
String path = null;
String type = null;
type = fileName.indexOf(".") != -1 ? fileName.substring(fileName.lastIndexOf(".") + 1,
fileName.length()) : null;
if (type != null) {//类型验证,如果不需要验证的话,也可以取消这一步
if ("GIF".equals(type.toUpperCase()) || "PNG".equals(type.toUpperCase())
|| "JPG".equals(type.toUpperCase())) {
// 项目在容器中实际发布运行的根路径
String realPath = request.getSession().getServletContext().getRealPath("/");
// 自定义的文件名称
String trueFileName = String.valueOf(System.currentTimeMillis()) + fileName;
// 设置存放图片文件的路径
path = realPath + "/resources/wxFile/" + trueFileName;
file.transferTo(new File(path)); model.addAttribute("resultCode", "200");
} else {
System.out.println("不是我们想要的文件类型,请按要求重新上传");
model.addAttribute("resultCode", "300"); }
} else {
System.out.println("文件类型为空");
model.addAttribute("resultCode", "300"); }
} else {
System.out.println("没有找到相对应的文件");
model.addAttribute("resultCode", "erro");
}
} catch (IOException e) {
e.printStackTrace();
}
return model;
}

看完是不是觉得特别简单?

微信小程序上传图片的更多相关文章

  1. 微信小程序上传图片及本地测试

    前端(.wxml) <view id="view1"> <view id="btns"> <image id="ima1 ...

  2. 微信小程序 上传图片并等比列压缩到指定大小

    微信小程序官方API中  wx.chooseImage() 是可以进行图片压缩的,可惜的是不能压缩到指定大小. 实际开发中需求可能是压缩到指定大小: 原生js可以使用canvas来压缩,但由于微信小程 ...

  3. 微信小程序上传图片(附后端代码)

    几乎每个程序都需要用到图片. 在小程序中我们可以通过image组件显示图片. 当然小程序也是可以上传图片的,微信小程序文档也写的很清楚. 上传图片 首先选择图片 通过wx.chooseImage(OB ...

  4. (十)微信小程序---上传图片chooseImage

    官方文档 示例一 wxml <view bindtap="uploadImage">请上传图片</view> <image wx:for=" ...

  5. .NET开发微信小程序-上传图片到服务器

    1.上传图片分为几种: a:上传图片到本地(永久保存) b:上传图片到本地(临时保存) c:上传图片到服务器 a和b在小程序的api文档里面有.直接说C:上传图片到服务器 前端代码: /* 上传图片到 ...

  6. 微信小程序上传图片,视频及预览

    wxml <!-- 图片预览 --> <view class='preview-warp' wx:if="{{urls}}"> <image src= ...

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

    一.wxml文件 <text>上传图片</text> <view> <button bindtap="uploadimg">点击选择 ...

  8. 微信小程序 - 上传图片(组件)

    更新日期: 2019/3/14:首次发布,更新了2018/12/30的UI以及反馈信息获取方式,具体请下载:demo. 2019/3/20:感谢544429676@qq.com指出的现存bug,已修复 ...

  9. 微信小程序上传图片更新图像

    解决思路: 1. 调用wx.chooseImage 选择图片 2.wx.uploadFile 上传图片 3.调用后台接口进行修改操作 修改原来的头像 wx.chooseImage({ success: ...

随机推荐

  1. java解压多层目录中多个压缩文件和处理压缩文件中有内层目录的情况

    代码: package com.xiaobai; import java.io.File; import java.io.FileOutputStream; import java.io.IOExce ...

  2. Redhat更换yum源

    redhat 默认自带的 yum 源需要注册,才能更新,所以对于我们来说需要替换掉redhat的yum源.下文更换为网易的. 删除原有的yum rpm -qa|grep yum|xargs rpm - ...

  3. MapReduce实现PageRank算法(邻接矩阵法)

    前言 之前写过稀疏图的实现方法,这次写用矩阵存储数据的算法实现,只要会矩阵相乘的话,实现这个就很简单了.如果有不懂的可以先看一下下面两篇随笔. MapReduce实现PageRank算法(稀疏图法) ...

  4. 【搬运工】linux下创建用户(一)

    转载:http://www.cnblogs.com/ylan2009/articles/2321177.html linux下创建用户(一) Linux 系统是一个多用户多任务的分时操作系统,任何一个 ...

  5. python-request-各方法使用及格式

    Request库方法介绍 方法 说明 requests.request() 构造一个请求,支撑一下各方法的基础方法  requests.get()  获取HTML网页的主要方法,对应于HTTP的GET ...

  6. 你有可能不知道的css浮动问题

    最近在开发过程中,有的时候会经常遇见明明知道需要这样做,但是为什么要这样做的原因我们却总是不明所以然. 先来解释下什么叫做清除浮动吧: 在非IE浏览器(如Firefox)下,当容器的高度为auto,且 ...

  7. (转)关于request.getServletPath(),request.getContextPath()的总结

    文章完全转载自 : https://blog.csdn.net/qq_27770257/article/details/79438987 最近对于request中的几种“路径”有点混淆,查找网上资源都 ...

  8. c#泛型约束 (where T:class)

    .NET支持的类型参数约束有以下五种:where T : struct                               | T必须是一个结构类型where T : class       ...

  9. Ctrl+Alt+Down/Up 按键冲突

    I mapped Ctrl-Alt-Up/Down to open web-browser and email client but it didn't take effect. Ctrl-Alt-U ...

  10. vue2 作用域插槽slot-scope详解

    插槽分为单个插槽,具名插槽,还有作用域插槽,前两种比较简单这里就不赘述了,今天的重点是讨论作用域插槽. 简单来说,前两种插槽的内容和样式皆由父组件决定,也就是说显示什么内容和怎样显示都由父组件决定: ...