上传附件----q-uploader

上传附件----q-uploader

一,用到的技术:Vue + Quasar
1,附件上传这种组件在很多UI框架里都有,今天写的是在Quasar框架下 :
属性说明
url用来处理上传的服务器的URL或路径
name文件名称,如果它应该不同于文件本来的名称
headers指定需要将哪些头部信息添加到XHR请求
hide-upload-progress隐藏上传进度。当您需要一些其他方式向用户发送上传进度信号时很有用
auto-expand在将某些文件添加到队列中时自动展开文件列表
clearable如果设置为“true”,则该组件向用户提供可操作的图标以移除当前选择
2, 此处是单上传, :url绑定的是上传的路径加上该路径需要上传的id(attachmentSupId)
 //此处的附件上传是需要点击上传按钮的
				 <q-uploader 
                  ref="attachmentUploader"
                  name="file"
                  @uploaded="attachmentUploaded"
                  :headers="{'Accept': 'application/json;charset=utf-8'}"
                  :url="uploadUrl+SupId" ></q-uploader> 
 //此处的附件上传是需要点击上传按钮的
				<q-uploader 
                  ref="attachmentUploader"
                  name="files"
                  auto-expand   //选择后自动展开
                  hide-upload-button //隐藏上传按钮,使用自动上传
                  @add="$refs['attachmentUploader'].upload()" //添加附件之后触发uploaded函数
                  @uploaded="attachmentUploaded"  //点击上传按钮之后触发
                  :headers="{'Accept': 'application/json;charset=utf-8'}"
                  :url="uploadUrls+SupId" ></q-uploader>
                  
	data:function(){
	 	return{
	 		 SupId:'',
	 		 uploadUrl:baseURL+'路径...'
	 	}
	 }
	attachmentUploaded: function(file, xhr) {
			            var res = JSON.parse(xhr.response)
			            this.fileCount++
			            if (res.success) {
			              this.$q.notify({
			                message: '上传成功',
			                type: 'positive',
			                icon: 'done',
			                timeout: 1000,
			                position: 'top-right'
			              })
			              this.attachmentForm.attachmentId = res.data
			              console.log(res.data)
			              if (this.fileCount>1) {
			                var cNode = document.getElementsByClassName('q-uploader-files')[0]
			                cNode.removeChild(cNode.childNodes[0])
			              }
			              var that = this
			              that.attachmentModal = false
			              that.listGet({
			                pagination: that.serverPagination
			              })
			            } else {
			              this.$q.notify({
			                message: res.msg,
			                type: 'negative',
			                icon: 'error_outline',
			                timeout: 3000,
			                position: 'top-right'
			              })
			            }
			          }
3,此处是批量上传(多上传)
				 <q-uploader 
				  multiple="multiple"
                  ref="fileChange"
                  color="secondary" 
                  name="files"
                  auto-expand
                  hide-upload-button
                  @add="$refs['fileChange'].upload()"
                  @uploaded="fileChangeUploaded" 
                  :headers="{'Accept': 'application/json;charset=utf-8'}"
                  stack-label="变更文件" 
                  :url="uploadUrl" ></q-uploader>
                  
        fileChangeUploaded: function(file, xhr) {
            var res = JSON.parse(xhr.response)
            this.techCount++
            if (res.success) {
              this.$q.notify({
                message: '上传成功!',
                type: 'positive',
                icon: 'done',
                timeout: 1000,
                position: 'top-right'
              })
              for (var i=0;i<this.techCount;i++) {
                var _obj = {}
                _obj.sysFileName = res.sysFileName
                _obj.sysFileType = res.suffix
                _obj.fileUrl = res.path
                _obj.userFileName = res.name
                _obj.userFileType = res.suffix 
                this.vendorFileLists.push(_obj)
              }
              for(var i=0; i<this.vendorFileLists.length; i++){
                for(var j=i+1; j<this.vendorFileLists.length; j++){
                  if(this.vendorFileLists[i].sysFileName == this.vendorFileLists[j].sysFileName){  
                    this.vendorFileLists.splice(j,1)
                    j--
                  }
                }
              }
            } else {
              this.$q.notify({
                message: res.msg,
                type: 'negative',
                icon: 'error_outline',
                timeout: 5000,
                position: 'top-right'
              })
            }
          }
                  
4,自动上传和非自动上传

1), 包含上传按钮,非自动上传
包含上传按钮,非自动上传

               <q-uploader 
                 ref="techUploaders"
                 color="secondary" 
                 name="files"
                 auto-expand
                 @uploaded="techUploadeds"
                 :headers="{'Accept': 'application/json;charset=utf-8'}"
                 :url="fileUrls"></q-uploader>

2), 自动上传
在这里插入图片描述

				<q-uploader 
                  ref="FileUploader"
                  name="files"
                  @add="$refs['FileUploader'].upload()"
                  @uploaded="fileUploaded"
                  auto-expand
                  hide-upload-button
                  :headers="{'Accept': 'application/json;charset=utf-8'}"
                  :url="uploadUrl+'MPLATE'" ></q-uploader>
                  
5,附件上传之后的重置状态

(在弹窗中,当附件上传之后会有"文件残留",需要重置其状态),如下图
此处文件就是

 this.$refs['FileUploader'].reset()     //FileUploader指的是q-uploader这个DOM元素
 this.$v.editFrom.$reset()              //类似的必填变量重置状态
 //当然不要忘记对存储该附件的变量也进行清空
  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 12
    评论
Velero是一个开源的备份和恢复工具,用于在Kubernetes集群中进行应用程序和数据的备份和迁移。 在Velero中,--uploader-type是一个命令行选项,用于指定备份的上传器类型。备份上传器是负责将Velero创建的备份文件传输或存储到指定位置的组件。 Velero支持多种备份上传器类型,包括: 1. azure:将备份文件上传到Azure Blob存储。 2. gcp:将备份文件上传到Google Cloud Storage。 3. s3:将备份文件上传到Amazon S3存储桶。 4. restic:使用restic工具进行备份文件的存储和管理。 5. volumeSnapshot:使用Kubernetes的卷快照功能进行备份和恢复。 使用--uploader-type选项,可以根据需求选择合适的备份上传器类型。例如,如果有一个Azure Blob存储账户可以用于备份存储,可以指定--uploader-type=azure来使用Azure Blob上传器。每种上传器类型都有自己特定的配置和要求,需要提供相应的认证凭据和配置信息。 通过指定适当的--uploader-type,Velero能够将备份数据安全地存储到受信任的云存储提供商或其他指定位置,以便在需要时进行恢复并迁移应用程序和数据。 总而言之,--uploader-type是Velero的一个选项,用于选择备份上传器类型,以指定备份数据的存储位置和方式。根据不同的需求和环境,可以选择使用Azure Blob、Google Cloud Storage、Amazon S3等不同的上传器类型来实现备份的上传功能。
评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值