上传方案一:
先将文件上传到七牛,再将七牛上传返回的文件访问路径上传到服务器
<div class="upload-music-container"> <el-upload class="upload-music" ref="upload" action="http://up-z2.qiniup.com/" :data="{token:uploadToken}" multiple accept=".mp3" :before-upload="uploadBefore" :on-change="uploadChange" :on-success="uploadSuccess" :on-error="uploadError"> <el-button size="small" type="primary">选取文件</el-button> <div slot="tip" class="el-upload__tip">仅支持上传mp3文件,文件大小不超过500M</div> </el-upload> <el-button size="small" type="success" @click="submitUpload">上传到服务器</el-button> </div> export default { name: 'uploadMusic', data() { return { headers: {}, uploadToken: null, canUploadMore: true, fileList: null, } }, created() { this.headers = {} //此处需要与server约定具体的header this.getUploadToken() }, methods: { //获取上传七牛token凭证 getUploadToken() { this.$http.get('xxxxxxx', {headers: this.headers}).then(response => { if (response.data.status == 200) { let resp = response.data.data this.uploadToken = resp.token } else { this.$message({ message: '获取凭证失败,请重试', type: 'error' }) } }) }, //获取音频文件时长 getVideoPlayTime(file, fileList) { let self = this //获取录音时长 try { let url = URL.createObjectURL(file.raw); //经测试,发现audio也可获取视频的时长 let audioElement = new Audio(url); let duration; audioElement.addEventListener("loadedmetadata", function (_event) { duration = audioElement.duration; file.duration = duration self.fileList = fileList }); } catch (e) { console.log(e) } }, //校验上传文件大小 uploadChange(file, fileList) { this.fileList = fileList let totalSize = 0 for (let file of fileList) { totalSize += file.raw.size } if (totalSize > 500 * 1024 * 1024) { this.canUploadMore = false this.$message({ message: '上传文件不能不超过500M', type: 'warn' }) } else { this.canUploadMore = true } }, uploadBefore(file) { if (this.canUploadMore) { return true } return false }, //上传成功 uploadSuccess(response, file, fileList) { this.getVideoPlayTime(file, fileList) }, //上传失败 uploadError(err, file, fileList) { console.log(err) }, //上传服务器数据格式化 getUploadMusicList() { let musicList = [] for (let file of this.fileList) { if (file.response && file.response.key) { musicList.push({ "play_time": file.duration, //播放时长 "size": file.size/1024, //文件大小 单位 kb "song_name": file.name, //歌曲名 "voice_url": "xxxx" //上传七牛返回的访问路径 }) } } return musicList }, //上传至服务器 submitUpload() { let musicList = this.getUploadMusicList() this.$http.post('xxxxxxxxxx', {music_list: musicList}, {headers: this.headers}).then(response => { if (response.data.status == 200) { this.$refs.upload.clearFiles() //上传成功后清空文件列表 this.$message({ message: '上传服务器成功', type: 'success' }) } else{ this.$message({ message: '上传服务器失败,请重试', type: 'error' }) } }).catch(err => { this.$message({ message: '上传服务器失败,请重试', type: 'error' }) }) }, } }
上传方案二:
直接将文件上传到服务器
<div class="upload-music-container"> <el-upload class="upload-music" ref="upload" multiple action="" :auto-upload="false" :http-request="uploadFile"> <el-button slot="trigger" size="small" type="primary">选取文件</el-button> <el-button style="margin-left: 10px;" size="small" type="success" @click="submitUpload">上传到服务器</el-button> <div slot="tip" class="el-upload__tip">只能上传mp3文件,且单次不超过500M</div> </el-upload> </div> export default { name: 'uploadMusic', data() { return { fileType:'video', fileData: new FormData(), headers:{}, } },
补充:element-ui实现多文件加表单参数上传
element-ui是分图片多次上传,一次上传一个图片。
如果想一次上传多个图片,就得关掉自动上传:auto-upload=‘false',同时不使用element内置上传函数,换成自己写的onsubmit()
为了实现图片的添加删除,可在on-change与on-remove事件中取得filelist(filelist实质就是uploadFiles的别名,而uploadFiles就是element内置的用于保存待上传文件或图片的数组),在最后一步提交的过程中,将filelist中的值一一添加到formdata对象中(formdata.append()添加,formdata.delete()删除),然后统一上传。
ps:on-preview事件和<el-dialog>组件以及对应属性、方法这一体系是用来实现图片的点击放大功能。被注释掉的beforeupload只有一个实参,是针对单一文件上传时使用到的,这里无法用上
<template> <div> <el-upload action="http://127.0.0.1:8000/api/UploadFile/" list-type="picture-card" :auto-upload="false" :on-change="OnChange" :on-remove="OnRemove" :on-preview="handlePictureCardPreview" :before-remove="beforeRemove" > <i class="el-icon-plus"></i> </el-upload> <el-dialog :visible.sync="dialogVisible"> <img width="100%" :src="/UploadFiles/2021-04-02/dialogImageUrl">以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!
《魔兽世界》大逃杀!60人新游玩模式《强袭风暴》3月21日上线
暴雪近日发布了《魔兽世界》10.2.6 更新内容,新游玩模式《强袭风暴》即将于3月21 日在亚服上线,届时玩家将前往阿拉希高地展开一场 60 人大逃杀对战。
艾泽拉斯的冒险者已经征服了艾泽拉斯的大地及遥远的彼岸。他们在对抗世界上最致命的敌人时展现出过人的手腕,并且成功阻止终结宇宙等级的威胁。当他们在为即将于《魔兽世界》资料片《地心之战》中来袭的萨拉塔斯势力做战斗准备时,他们还需要在熟悉的阿拉希高地面对一个全新的敌人──那就是彼此。在《巨龙崛起》10.2.6 更新的《强袭风暴》中,玩家将会进入一个全新的海盗主题大逃杀式限时活动,其中包含极高的风险和史诗级的奖励。
《强袭风暴》不是普通的战场,作为一个独立于主游戏之外的活动,玩家可以用大逃杀的风格来体验《魔兽世界》,不分职业、不分装备(除了你在赛局中捡到的),光是技巧和战略的强弱之分就能决定出谁才是能坚持到最后的赢家。本次活动将会开放单人和双人模式,玩家在加入海盗主题的预赛大厅区域前,可以从强袭风暴角色画面新增好友。游玩游戏将可以累计名望轨迹,《巨龙崛起》和《魔兽世界:巫妖王之怒 经典版》的玩家都可以获得奖励。
更新日志
- 【雨果唱片】中国管弦乐《鹿回头》WAV
- APM亚流新世代《一起冒险》[FLAC/分轨][106.77MB]
- 崔健《飞狗》律冻文化[WAV+CUE][1.1G]
- 罗志祥《舞状元 (Explicit)》[320K/MP3][66.77MB]
- 尤雅.1997-幽雅精粹2CD【南方】【WAV+CUE】
- 张惠妹.2007-STAR(引进版)【EMI百代】【WAV+CUE】
- 群星.2008-LOVE情歌集VOL.8【正东】【WAV+CUE】
- 罗志祥《舞状元 (Explicit)》[FLAC/分轨][360.76MB]
- Tank《我不伟大,至少我能改变我。》[320K/MP3][160.41MB]
- Tank《我不伟大,至少我能改变我。》[FLAC/分轨][236.89MB]
- CD圣经推荐-夏韶声《谙2》SACD-ISO
- 钟镇涛-《百分百钟镇涛》首批限量版SACD-ISO
- 群星《继续微笑致敬许冠杰》[低速原抓WAV+CUE]
- 潘秀琼.2003-国语难忘金曲珍藏集【皇星全音】【WAV+CUE】
- 林东松.1997-2039玫瑰事件【宝丽金】【WAV+CUE】