1.开发环境 vue
2.电脑系统 windows10专业版
3.在开发的过程中,咱们常常会应用到element进行文件的上传和二进制文件的解析,上面我来分享一下。
4.element图片上传,代码如下:
// template中代码如下:<el-upload list-type="picture-card" action="" :limit="1" :auto-upload="false" //要害 代码 :on-change="onchangeMainpicture" //文件上传时触发函数 > <i slot="default" class="el-icon-plus"></i> <div slot="file" slot-scope="{ file }"> <img class="el-upload-list__item-thumbnail" :src="file.url" alt="" /> <span class="el-upload-list__item-actions"> <span class="el-upload-list__item-preview" @click="handlePictureCardPreview(file)" > <i class="el-icon-zoom-in"></i> </span> <span v-if="!disabled" class="el-upload-list__item-delete" @click="handleDownload(file)"> <i class="el-icon-download"></i> </span> <span v-if="!disabled" class="el-upload-list__item-delete" @click="handleRemove(file)"> <i class="el-icon-delete"></i> </span></span> </div></el-upload>
return 中代码如下:uploadimgurl: { // 主图 Mainpictureurl: "", // 主题内容 Mainimagecontenturl: "", // 视频 videourl: "",},
// methods中增加如下代码onchangeMainpicture(file, fileList) { console.log(file); this.uploadimgurl.Mainpictureurl = file.raw;},
5.视频上传
// template代码<el-upload list-type="picture-card" :on-change="onchangevideo" action="" :limit="1" :auto-upload="false"> <i slot="default" class="el-icon-plus"></i> <div slot="file" slot-scope="{ file }"> <video :src="file.url" class="avatar" controls="controls"> </video> </div></el-upload>
// return 代码如上
// methods办法 如下:onchangevideo(file, fileList) { // console.log(event); // console.log(file); // console.log(fileList); this.uploadimgurl.videourl = file.raw;},
6.提交代码
async uploadpictures() { let formData = new FormData(); const param = { itemMainId: this.$route.query.mainId, }; formData.append("param", JSON.stringify(param)); formData.append("main", this.uploadimgurl.Mainpictureurl); //主图 formData.append("images", this.uploadimgurl.Mainimagecontenturl); //主图内容 formData.append("images", this.uploadimgurl.Mainimagecontenturl); //主图内容 formData.append("images", this.uploadimgurl.Mainimagecontenturl); //主图内容 formData.append("images", this.uploadimgurl.Mainimagecontenturl); //主图内容 formData.append("video", this.uploadimgurl.videourl); //视频 await baduploadpictureupload(formData).then((res) => { console.log("我是上传主图的接口"); console.log(res); });},
7.解析二进制图片/视频,封装办法如下:
// 封装全局办法,存储文件 id/* 头像(0), 身份证侧面(1),身份证背面(2),门店(10), 营业执照(11), 商品主档图(20), 商品主档视频(21), 商品主档内容(22), 商品图(30),图纸2D(31),图纸3D(32);*/function getfilesid(value1) { let filesidobj = { id0: "",// 头像 id1: "",//身份证侧面 id2: "",//身份证背面 id10: "",//门店 id11: "",//营业执照 id20: "",//商品主档图 id21: "",//商品主档视频 id22: "",//商品主档内容 id30: "",//商品图 id31: "",//图纸2D id32: "",//图纸3D } for (let key in value1) { console.log(key); console.log(value1[key]); switch (value1[key]) { case "0": filesidobj.id0 = key; break; case "1": filesidobj.id1 = key; break; case "2": filesidobj.id2 = key; break; case "10": filesidobj.id10 = key; break; case "11": filesidobj.id11 = key; break; case "20": filesidobj.id20 = key; break; case "21": filesidobj.id21 = key; break; case "22": filesidobj.id22 = key; break; case "30": filesidobj.id30 = key; break; case "31": filesidobj.id31 = key; break; case "32": filesidobj.id32 = key; break; default: break; } } return filesidobj;}
// 封装全局 图片申请接口// 导入 图片 接口import { badlisttabledetailsfiles, //获取图片接口 badlisttabledetailsvideofiles, // 获取视频接口 } from "@/network/api";// 专用 图片 申请 接口async function getfilesimg(id) { let getfilesimgres = []; await badlisttabledetailsfiles({ fileId: id, }).then((res) => { console.log("我是专用获取图片接口"); console.log(res); let reader = new FileReader(); reader.readAsDataURL(res); getfilesimgres.push(window.URL.createObjectURL(res)); return getfilesimgres; }); return getfilesimgres;}
// 专用 视频 申请 接口async function getfilesvideo(id) { let getfilesvideores = {} await badlisttabledetailsvideofiles({ fileId: id, }).then((res) => { console.log("我是专用获取视频接口"); console.log(res); // let reader = new FileReader(); // reader.readAsDataURL(res); // console.log(res); // this.filesvideo = window.URL.createObjectURL(res); // console.log(this.filesvideo); getfilesvideores = window.URL.createObjectURL( new Blob([res], { type: "application/octet-stream" }) ); return getfilesvideores; console.log(getfilesvideores); }); return getfilesvideores;}
7-1.申请接口封装
// 图片 接口export const badlisttabledetailsfiles = (value) => { return http1({ url: "/api/sys/image", method: "post", data: value, responseType: 'blob', });};// 视频 接口export const badlisttabledetailsvideofiles = (value) => { return http1({ url: "/api/sys/file", method: "post", data: value, responseType: 'arraybuffer', });};
8.封装办法应用如下:
// 获取文件 idlet filesid = this.$Cmethods.getfilesid(this.filesimg);
// 获取 对应id上面图片的地址let getfilesimg = await this.$Cmethods.getfilesimg(filesid.id20); //获取主档
// 获取对应 id上面的视频地址let filesvideo = await this.$Cmethods.getfilesvideo(filesid.id21); //宝贝视频
9.本期的分享到了这里就完结拉,心愿对你有所帮忙,让咱们一起致力走向巅峰。