一、ivew upload組件vue
<Upload type="drag" // 支持拖拽 multiple // 支持多文件上傳 :max-size="10240000" // 設置上傳最大量 :action="'https://upload.qiniup.com'" // 七牛服務器地址,詳見下面圖片 :show-upload-list="false" // 是否顯示上傳列表 :data="uploadParams" // 上傳參數配置 :default-file-list="[]" // 顯示默認列表,以前上傳的文件列表 :on-success="handleSuccess" // 上傳成功回調函數 :before-upload="beforeUpload" // 上傳以前回調函數,能夠在這裏設置上傳的參數 :on-remove="removeFile" // 刪除文件回調函數 :on-preview="previewFile" // 點擊上傳列表回調函數 :on-progress="progressFile" // 上傳進度回調函數 :on-change="changeFile" // 選擇文件改變回調函數 style="width: 100%;" > <i class="iconfont icon-add1 icon"></i>{{buttonText ? buttonText : '點擊或者拖拽到此上傳'}} </Upload>
其實上傳七牛有兩種方法,這裏直接使用表單action提交自動觸發上傳七牛,也能夠導入七牛js經過七牛實例傳參、掉接口上傳。服務器
二、獲取token,上傳必備,經過後臺接口返回。
三、設置其餘參數,經過表單裏面的:data屬性傳遞給七牛iview
data () { return { uploadParams: {} } } methods: { beforeUpload (request) { console.log(request, 'beforeUpload') // **注意這裏的參數必須經過屬性賦值,若是直接修改整個uploadParams是無效的。** // 上傳以前設置上傳參數, this.uploadParams.token = this.$store.state.upload_token // 七牛response hash key的值自定義,後面若是須要瀏覽或者下載都須要這個地址,若是key不定義,那麼七牛生成的key === hash的值 this.uploadParams.key = request.name // 整個上傳確定是一個組件,因此須要將值反饋給父界面 this.$emit('completeFun', [request]) }, handleSuccess (request, file, list) { console.log(file, list, '上傳成功') // 這裏就能拿到七牛返回的response信息(hash, key)而後拼接服務器地址,就能夠訪問了 this.imageUrl = this.$store.getters.upload_url + request.key console.log(request, this.$store.getters.upload_url + file.name, '獲取圖片地址') this.$emit('successFun', [file, list, this.imageUrl]) }, }
遇到的問題異步