Skip to content

Upload (上传)

公返回文件选择上传列表,上传逻辑需要自己编写,示例为支持宝云扩展存储上传,可判断是否重复上传,节省扩展存储空间,上传逻辑需要自己编写,组件返回上传列表和文件文件哈希值,这里演示的是阿里云扩展存储上传文件,详细实现见模版个人资料头像上传

支持平台

安卓ios鸿蒙web微信小程序

示例代码

html
<template>
	<t-page title='上传' main-class="p-30">
		<t-card main-class="mb-30" title='图片上传'
			sub-title="支持宝云扩展存储上传,可判断是否重复上传,节省扩展存储空间,上传逻辑需要自己编写,组件返回上传列表和文件文件哈希值,这里演示的是阿里云扩展存储上传文件,详细实现见模版个人资料头像上传"></t-card>
		<t-section main-class="mb-30" title="支持宝云扩展存储上传说明"></t-section>
		<t-col main-class="mb-30 tdb tdp tdr">
			<t-text main-class="slh-55">1:选择文件,获取文件MD5校验值并返回本地缓存地址,前端采用缓存地址渲染图片</t-text>
			<t-text main-class="slh-55">2:请求支付宝扩展存储获取授权和服务端存储路径</t-text>
			<t-text main-class="slh-55">3:当用户提交表单或者提交表单时后台上传图片,这样可以不用等待上传结果卡界面</t-text>
			<t-text main-class="slh-55">4:异步返回上传回调</t-text>
		</t-col>
		<t-section main-class="mb-30" title="基础功能-type"></t-section>
		<t-col main-class="tdb tdp tdr fww">
			<t-upload main-class="mrb-30" v-model="images" :count="3"></t-upload>
			<t-upload main-class="mrb-30" v-model="images" :count="3" type="primary"></t-upload>
			<t-upload main-class="mrb-30" v-model="images" :count="3" type="success"></t-upload>
			<t-upload main-class="mrb-30" v-model="images" :count="3" type="info"></t-upload>
			<t-upload main-class="mrb-30" v-model="images" :count="3" type="warning"></t-upload>
			<t-upload main-class="mrb-30" v-model="images" :count="3" type="error"></t-upload>
		</t-col>
		<t-section main-class="mb-30" title="基础功能-effect"></t-section>
		<t-row main-class="tdb tdp tdr fww">
			<t-upload main-class="mrb-30" v-model="images" effect="normal" :count="3" type="primary"></t-upload>
			<t-upload main-class="mrb-30" v-model="images" effect="dark" :count="3" type="primary"></t-upload>
			<t-upload main-class="mrb-30" v-model="images" effect="disabled" :count="3" type="primary"></t-upload>
			<t-upload main-class="mrb-30" v-model="images" effect="light" :count="3" type="primary"></t-upload>
		</t-row>
		<t-section main-class="mb-30" title="基础功能-size"></t-section>
		<t-row main-class="tdb tdp tdr fww mb-30">
			<t-upload main-class="mrb-30" v-model="images" :count="3" size="large" type="primary"></t-upload>
			<t-upload main-class="mrb-30" v-model="images" :count="3" size="medium" type="primary"></t-upload>
			<t-upload main-class="mrb-30" v-model="images" :count="3" size="small" type="primary"></t-upload>
			<t-upload main-class="mrb-30" v-model="images" :count="3" size="mini" type="primary"></t-upload>
		</t-row>
		<t-section main-class="mb-30" title="禁用关闭"></t-section>
		<t-row main-class="tdb tdp tdr mb-30">
			<t-upload v-model="images" :closed="false"></t-upload>
		</t-row>
		<t-section main-class="mb-30" title="禁用预览"></t-section>
		<t-row main-class="tdb tdp tdr mb-30">
			<t-upload v-model="images" :closed="false" :previewImage="false"></t-upload>
		</t-row>
		<t-section main-class="mb-30" title="状态"></t-section>
		<t-col main-class="tdb tdp tdr mb-30">
			<t-upload v-model="images2" main-class="mb-30" state-box-class="bg-rgba(0,0,0,0.8)"></t-upload>
			<t-upload v-model="images2"></t-upload>
		</t-col>
		<t-section main-class="mb-30" title="自定义尺寸"></t-section>
		<t-col main-class="tdb tdp tdr mb-30">
			<t-upload v-model="images1" item-box-class="w-100% h-300 r-10" :count="1" :max-size="300">
				<template #icon>
					<t-image src="static/image/mqplavqy.png" main-class="twh-100%"></t-image>
				</template>
			</t-upload>
		</t-col>
		<t-button main-class="m-30" type='s' @click="submit">点提交表单后台开始上传,提升用户体验</t-button>
		<t-row main-class="h-30"></t-row>
	</t-page>
</template>
<script>
	import { TuiApi } from '@/api/uriApi'
	export default {
		data() {
			return {
				images1: [] as string[],
				images: [
					{ url: '/pagesA/static/image/6527ae979850d.jpg' },
					{ url: '/pagesA/static/image/65275c9ac3b1d.jpg' },
					{ url: '/pagesA/static/image/652769fa89bcf.jpg' },
				] as UTSJSONObject[],
				images2: [
					{ url: '/pagesA/static/image/6527ae979850d.jpg', status: { icon: 'warning', text: '文件超限' } },
					{ url: '/pagesA/static/image/65275c9ac3b1d.jpg', status: { text: '上传中' } },
					{ url: '/pagesA/static/image/652769fa89bcf.jpg', status: { text: '上传完成' } },
				] as UTSJSONObject[]
			};
		},
		methods: {
			submit() {
				const uploadList = this.images.filter((item : UTSJSONObject) : boolean => {
					return (item.path != '' && item.path != null)
				})
				//获取上传
				TuiApi('getUploadFileOptionsplus', { list: uploadList }).then(res => {
					console.log(res)
				})
			}
		}
	}
</script>

属性

名称类型默认值说明可选值
sizeStringmini组件尺寸large(大尺寸), medium(中尺寸), small(小尺寸), mini(迷你)
typeString""组件类型info(信息), primary(正常), error(错误), warning(警告), success(成功)
disabledBooleanfalse组件是否禁用false, true
stopBooleanfalse是否阻止事件冒泡(Tui统一写法处理事件冒泡)false, true
hoverBooleantrue是否有点击效果false, true
pathString""点击组件后跳转的页面路径,如果为空则响应点击事件,如果不为空则跳转页面不会响应单击事件。-
mainClassString""组件根节点的样式-
nativeClassString""组件根节点原生样式-
effectString"normal"组件显示主题normal(正常), dark(深色), light(浅色), plain(镂空)
typeStringp
closeIconStringclose-fill移除图片的图标名称
sourceTypestring[]['album', 'camera']图片或视频拾取模式camera: 从相机选择
album: 从本地相册选择
iconStringadd-fill图标
iconClassString``图标样式
itemBoxClassString``每一项盒子的样式
countNumber1最大上传数量 -1不限制
sizeTypestring[]['original ','compressed ']压缩模式original : 图
compressed : 压缩图
closedBooleantrue是否显示关闭图标
previewImageBooleantrue是否预览
stateBoxClassString``状态进度显示盒子的样式
modelValueUTSJSONObject[][]选中文件列表
closeIconClassString``移除图标的样式

事件

名称返回参数说明
change(e:UTSJSONObject[])选择文件变化时触发

插槽

名称返回值说明
name-
name-