Upload附件上传
Form 的上传列使用 type: 'upload'。绑定值、响应映射和回调的完整说明见 Upload 组件 API。
//使用上传附件需要引入axios
import axios from 'axios'
const app =createApp({})
app.use(Avue,{axios})提示
propsHttp配置请求接口返回的数据结构
name图片的名称url路径地址res返回数据层级结构home相对路径的主路径
类型
listType配置上传的类型,multiple是否多选上传
数据类型
提示
dataType配置数据的结构string、object、json 当dataType配置为object时,可以配置props存储的数据结构
label图片的名称value路径地址 当dataType配置为json时,是json序列化字符串,也可以配置props存储的数据结构
dataType可以配置数据的类型
上传前和上传后方法
顶层函数 prop 使用 :upload-before="uploadBefore"、:upload-after="uploadAfter";也可直接写在列配置的 uploadBefore、uploadAfter 中,列上的回调优先。
| 回调 | 参数 | 继续或终止 |
|---|---|---|
| uploadBefore | (file, done, stop, column) | done(newFile?) 继续上传;stop(error?) 取消当前文件 |
| uploadAfter | (res, done, stop, column) | done(data?) 保存上传结果;stop(error?) 放弃当前结果 |
res 已按 propsHttp.res 提取。第三个参数是停止回调,不能当成 loading 布尔值。异步逻辑应在成功、失败、取消的每条分支调用 done 或 stop,否则当前流程不会结束。设置 httpRequest 会接管整个上传过程,此时不会再自动执行默认请求、大小校验、before/after 或更新绑定值。
选择一张小于 1 MB 的 PNG/JPG 图片,观察“上传前 / 上传后”日志与绑定数组。本例使用页面内模拟接口和临时图片地址,不向外部服务发送文件;刷新页面后临时地址失效。
本地模拟接口代码见 示例辅助文件。接入业务时将 action 换成自己的接口,并移除模拟代码;本页其他接口与 OSS 示例需要对应服务可用。
自定义预览方法
配置uploadPreview预览回调方法
自定义删除方法
uploadDelete(file, column) 需要返回 Promise:resolve 后删除,reject 时保留。第二个参数是列配置,不能当成文件列表;不要只返回普通 boolean。
配置 uploadDelete 删除回调函数
指定文件类型
可以配置fileType来指定文件的类型,一般用于没有后缀格式的地址
传参
可以配置data和headers属性作为传递参数
上传等待文案和按钮文案
可以配置loadText上传等待文案,fileText上传按钮文案,tip提示文案
限制文件类型和大小数量
accept 设置文件选择器的类型提示,业务格式校验可放在 uploadBefore 中。limit 限制文件数量,fileSize 以 KB 为单位,例如 10240 表示 10 MB。
超出大小时调用 uploadSized(fileSize, file, fileList, column),模板属性名为 upload-sized,末尾有 d。超出数量调用 uploadExceed(limit, files, fileList, column)。
配置 accept、limit、fileSize,并通过 upload-sized 接收大小限制回调
超出上传限制回调
uploadExceed文件超出上传限制回调
上传失败错误回调函数
uploadError(error, column) 接收请求错误或停止原因;大小、数量超限分别传入 size、exceed。accept 本身不会生成格式错误回调。
配置 uploadError 接收上传失败原因
自定义模板
列名的prop加上Type即可自定义内容
图片水印
可以配置canvasOption属性去生成水印和压缩图片,
拖拽排序
<!-- 导入需要的包 (一定要放到index.html中的head标签里) -->
<script src="https://cdn.staticfile.net/Sortable/1.10.0-rc2/Sortable.min.js"></script>配置drag属性即可开启拖拽排序
阿里云oss上传
<!-- 导入需要的包 (一定要放到index.html中的head标签里) -->
<script src="https://cdn.staticfile.net/ali-oss/6.10.0/aliyun-oss-sdk.min.js"></script>//入口处全局配置阿里云的参数
const app =createApp({})
app.use(AVUE, {
ali: {
region: 'oss-cn-beijing',
endpoint: 'oss-cn-beijing.aliyuncs.com',
stsToken:'',
accessKeyId: '',
accessKeySecret: '',
bucket: 'avue',
}
})七牛云oss上传
<!-- 导入需要的包 (一定要放到index.html中的head标签里) -->
<script src="https://avuejs.com/cdn/CryptoJS.js"></script>//入口处全局配置七牛云的参数
const app =createApp({})
app.use(AVUE, {
qiniu: {
AK: '',//七牛云相关密钥
SK: '',//七牛云相关密钥
bucket:'https://upload.qiniup.com'//存储地区,默认为华东,其他的如下表
scope: 'test',//存储空间名称
url: 'https://cdn.avuejs.com/'//外链的域名地址
}
})腾讯云oss上传
<!-- 导入需要的包 (一定要放到index.html中的head标签里) -->
<script src="https://avuejs.com/cdn/cos-js-sdk-v5.min.js"></script>const app = createApp({})
app.use(AVUE, {
cos: {
SecretId: '',//腾讯云相关密钥
SecretKey: '',//腾讯云相关密钥
Bucket: 'test',//存储空间名称
Region: 'ap-beijing'//存储地区
}
})