> app中图片上传是经常用到的功能
[TOC]
## 图片上传
> 使用 [文件上传:uni.uploadFile()](https://uniapp.dcloud.io/api/request/network-file?id=uploadfile)方式
~~~
<template>
<view class="content">
<progress :percent="percent" strock-width="10"></progress>
<button type="primary" @tap="upload">chooseImg</button>
</view>
</template>
<script>
// 注册一个进度条
var _self;
export default {
data() {
return {
percent:0
}
},
onLoad() {
_self = this;
},
methods: {
upload:function(){
uni.chooseImage({
count: 1,
sizeType:['copressed'],
success(res) {
// console.log(res.tempFilePaths) // 如果设置可选多张,这里可打印多张图地址
//因为有一张图片, 输出下标[0], 直接输出地址
var imgFiles = res.tempFilePaths[0]
console.log(imgFiles)
// 上传图片
// 做成一个上传对象
var uper = uni.uploadFile({
// 需要上传的地址
url:'http://demo.hcoder.net/index.php?c=uperTest',
// filePath 需要上传的文件
filePath: imgFiles,
name: 'file',
success(res1) {
// 显示上传信息
console.log(res1)
}
});
// onProgressUpdate 上传对象更新的方法
uper.onProgressUpdate(function(res){
// 进度条等于 上传到的进度
_self.percent = res.progress
console.log('上传进度' + res.progress)
console.log('已经上传的数据长度' + res.totalBytesSent)
console.log('预期需要上传的数据总长度' + res.totalBytesExpectedToSend)
})
}
})
}
}
}
</script>
~~~
## 头像上传
> 比如用户资料修改,其展现方式与以上不同
> 可参考:https://www.cnblogs.com/wo1ow1ow1/p/11730220.html
## 图片缓存
> 使用 [文件下载:uni.downloadFile()](https://uniapp.dcloud.io/api/request/network-file?id=downloadfile)方式
~~~
<template>
<view class="content">
<image :src="imgUrl4display"></image>
</view>
</template>
<script>
var _self;
export default {
data() {
return {
imgUrl4display: '',
imgRemoteUrl: 'https://img-cdn-qiniu.dcloud.net.cn/uniapp/images/shuijiao.jpg'
}
},
onLoad() {
_self = this;
let keyName = 'image_storage';
uni.getStorage({
key: keyName,
success: function(res) {
console.log('get storage success...');
_self.displayImg(res.data);
},
fail: function(res) {
console.log('fail 2 download...');
// 本地没有缓存 需要下载
uni.downloadFile({
url: _self.imgRemoteUrl,
success: (res) => {
console.log(res)
if (res.statusCode === 200) {
_self.displayImg(res.tempFilePath);
uni.setStorage({
key: keyName,
data: res.tempFilePath,
success: function() {
}
})
}
}
});
}
})
},
methods: {
displayImg: function(data) {
_self.imgUrl4display = data;
}
}
}
</script>
~~~
- 基础知识
- UNI核心介绍
- flex布局
- 生命周期
- 全局方法
- 组件定义
- 自定义组件
- 全局组件
- 组件之间的数据传输
- 条件编译
- 自定义头部
- 节点信息 (SelectorQuery)
- vuejs基础语法
- 页面跳转以及参数传递
- 事件的监听注册以及触发
- css3动画
- block的妙用
- mixin (混入)
- uniapp快捷键
- vuex状态管理
- 实用功能
- 获取服务提供商
- 启动页 / 启动界面
- 引导页
- tabbar配置
- 头部导航栏基础设置
- 上拉下拉(刷新/加载)
- 第三方登录
- 第三方分享
- 推送通知 之 unipush
- scroll-view双联动
- 配置iOS通用链接(Universal Links)
- 本地缓存操作
- 升级/更新方案
- 热更新
- 图片上传
- 搜索页实现
- canvas绘图助手
- 地图定位
- 第三方支付————todo
- 分类轮播
- 清除应用缓存
- uniapp与webview的实时通讯
- 视频-----todo
- 聊天----todo
- 长列表swiper左右切换
- 第三方插件
- uview
- mescroll
- uCharts (图表)
- 无名 (更新插件)
- 第三方模版
- 自定义基座
- 打包发行
- 要封装的方法
- 缓存 cache.js
- 请求接口 request.js
- 工具类 util.js
- 小程序登录 xcxLogin.js
- 版本更新 update.js
- 优质插件
- 更新插件----todo
- 语音
- 语音识别 (含上传)
- 百度语音合成播报接口
- 官方常用组建
- input 输入框
- image 图片
- audio 音频
- picker 选择器
- video 视频
- scroll-view 滚动视图