Vue的移动端多图上传插件vue-easy-uploader的示例代码
前言这段时间赶项目,需要用到多文件上传,用Vue进行前端项目开发。在网上找了不少插件,都不是十分满意,有的使用起来繁琐,有的不能适应本项目。就打算自己折腾一下,写一个Vue的上传插件,一劳永逸,以后可以直接使用。 目前vue-easy-uploader已上传到GitHub和NPM,使用起来方便简单,不需要繁琐的配置即可投入生产,不过需要后端配合,实现上传接口。 本项目GitHub地址: https://github.com/quanzaiyu/vue-easy-uploader 本项目NPM地址: https://www.npmjs.com/package/vue-easy-uploader 详细的使用方法都在仓库Readme中,就不赘述,这里谈下本插件的设计开发思路。 插件介绍
后期版本迭代将不限于图片,往通用文件上传进行改进。 先看看上传插件使用时候的效果图: 目录结构 文件解析 index.js let plugin = {}
plugin.install = function (_Vue,_store) { export default plugin 这是插件的主入口文件,注册了全局的上传组件和状态管理,使用时只需要在项目入口文件(一般是main.js)中加入以下代码即可引入此插件: let store = new Vuex.Store({})
Vue.use(uploader,store) store.js 此文件为状态管理配置文件,主要包含三个state: 针对每个state都有自己的mutation,用于改变state,规范上mutation都需要使用大写字母加下划线的形式,本人习惯使用小写字母,不过都不是原则上的问题。 最重要的一个state是img_status,用于监视图片上传的状态。包括以下几个状态: 在组件中可以通过改变上传状态实现文件的上传,同时也可以监听上传状态的变化而执行回调。如: state.imgstore.img_status
})
},watch: {
imgStatus () {
if (this.imgStatus === 'finished') {
this.submit()
}
}
}
上述代码中,使用upload方法更新了上传状态,让图片开始执行上传操作,使用watch进行上传状态的监视,当上传完成(img_status状态变为finished),执行回调函数submit。 源文件如下: const actions = {}
const getters = {} const mutations = { export default { uploader.vue 先看源代码(为了节省空间,未贴出style部分的代码): 以上代码中有一些注释序号,是此插件设计的主要思路,其他代码都比较容易理解,分别说下 ① 选择文件后执行,img_status状态变为selected。 ② 将带上传的图片文件转化为Base64格式,用于缩略图显示。 ③ 创建一个表单对象,用于存储待上传的文件。 ④ 注意这里的name属性值,暂时写死,后面设计打算从组件中指定name属性,如果是多文件的话,name属性的数组序号从0开始递增。 ⑤ 未依赖任何Ajax请求插件,使用原生的XMLHttpRequest对象创建请求。 ⑥ 存储上传成功后服务器返回的上传路径。 ⑦ 检测上传状态,当在使用此插件时将img_status的状态设置为uploading时执行上传操作。 使用 参考本项目的GItHub和NPM。 注意 使用此插件时,需要与后端约定返回的数据格式,如下: 代码如下: 预览如下: 返回的是一个上传后的路径数组,包括error和url字段,每个文件有自己的上传状态,当error为0的时候为上传成功,并返回上传后的路径url 改进后续版本打算进行如下改进
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持编程之家。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |