后台管理系统之“图片上传” --vue

本文介绍了基于Vue的图片上传功能实现,包括使用原生HTML的FileUpload对象、FileList、FileReader,以及如何通过FormData和axios上传文件到后台。详细阐述了上传图片的原理、前端限制、文件读取及上传步骤,并提供了关键代码示例。
摘要由CSDN通过智能技术生成

图片上传(基于vue)

  相信上传图片是所有系统必备的功能吧,工作中的第一个管理系统就在上传图片的功能上卡顿了一整天。

  当时用的elementUI组件,但是由于样式和设计图样式差别较大再加上原生相较好理解,便使用了原生实现图片上传功能。

  菜鸟上路,望多多指点。

  • 图片上传原理(csdn里看到的比较通俗易懂的图片上传原理) 

   参考地址:https://blog.csdn.net/q857277886/article/details/79092591

  前端网页文件上传一般使用 <input type="file" />来实现。

  1. 在 HTML 文档中 <input type="file" />标签每出现一次,一个 FileUpload 对象就会被创建。

    2.该标签包含一个文本输入字段,用来输入文件名,还有一个按钮,用来打开文件选择对话框以便图形化选择文件,该标签的 value属性保存了用户指定的文件的名称。

         3.多选:标签可以通过添加 multiple 属性来支持多选;如果选择了多个文件, 这个值表示第一个被选择的文件路径. JavaScript 可以通过 Input 的 FileList 属性获取到其他的文件路径.

         4.文件信息:可以通过 input.files 属性返回 — 返回值是一个 FileList 对象,这个对象是一个包含了许多 File 文件的列表,列表包含图片的name,type,size等属性。

    5.限制文件类型:你可以使用 input 的 accept 属性,accept 属性接受一个逗号分隔的 MIME 类型字符串。如: accept="image/png, image/jpeg" or accept=".png, .jpg, .jpeg" — PNG/JPEG

    6.选择文件会触发input的onchange事件;

    7.上传:上传文件前 使用FileReader对象读取指定file的文件,并将文件转换为二进制字符串, 并将xhr对象, overrideMimeType 属性设置为text/plain; charset=x-user-defined-binary, 最终后台接收到二进制后再做具体处理。(注:小编用的是FormData对象)

 

  • 实现步骤

  ①:样式的实现

好的,我们来一步步搭建一个基于vue-admin-template的后台管理系统。 ## 1. 准备工作 首先需要安装好node.js和npm,并确保版本符合要求。然后我们需要安装vue-cli脚手架工具,通过以下命令安装: ``` npm install -g vue-cli ``` 安装完成后,我们就可以使用vue-cli来创建一个基于vue-admin-template的项目了。 ## 2. 创建项目 使用以下命令创建一个vue-admin-template项目: ``` vue init vuejs-templates/admin vue-admin-demo ``` 其中,vue-admin-demo为项目名称,根据自己的需要修改即可。 创建完成后,进入项目目录并安装依赖: ``` cd vue-admin-demo npm install ``` 安装完成后,我们可以启动项目并查看效果: ``` npm run dev ``` 打开浏览器,访问http://localhost:9528,就可以看到一个基于vue-admin-template的后台管理系统了。 ## 3. 配置路由 在src/router/index.js文件中,我们可以看到已经定义了一个路由: ```javascript import Vue from 'vue' import Router from 'vue-router' import HelloWorld from '@/components/HelloWorld' Vue.use(Router) export default new Router({ routes: [ { path: '/', name: 'HelloWorld', component: HelloWorld } ] }) ``` 我们可以根据自己的需要修改这个路由,添加更多的路由信息。比如,我们可以添加一个Dashboard页面的路由: ```javascript import Vue from 'vue' import Router from 'vue-router' import HelloWorld from '@/components/HelloWorld' import Dashboard from '@/views/dashboard/index' Vue.use(Router) export default new Router({ routes: [ { path: '/', name: 'HelloWorld', component: HelloWorld }, { path: '/dashboard', name: 'Dashboard', component: Dashboard } ] }) ``` ## 4. 配置菜单 在src/layout/components/Sidebar/index.vue文件中,我们可以看到已经定义了一个菜单: ```javascript <el-submenu index="1"> <template slot="title"> <i class="el-icon-location"></i> <span>Dashboard</span> </template> <el-menu-item index="1-1">Dashboard 1</el-menu-item> <el-menu-item index="1-2">Dashboard 2</el-menu-item> <el-menu-item index="1-3">Dashboard 3</el-menu-item> </el-submenu> ``` 我们可以根据自己的需要修改这个菜单,添加更多的菜单项。比如,我们可以添加一个Dashboard页面的菜单项: ```javascript <el-submenu index="1"> <template slot="title"> <i class="el-icon-location"></i> <span>Dashboard</span> </template> <el-menu-item index="/dashboard">Dashboard</el-menu-item> </el-submenu> ``` ## 5. 配置页面 我们可以在src/views目录下添加自己的页面,比如Dashboard页面。创建一个dashboard目录,并在其中添加一个index.vue文件。 在index.vue文件中,我们可以像普通的vue组件一样编写代码,比如: ```vue <template> <div> <h1>Dashboard</h1> </div> </template> <script> export default { name: 'Dashboard' } </script> ``` ## 6. 打包部署 当我们完成了开发工作后,就可以将项目打包部署到生产环境中了。使用以下命令进行打包: ``` npm run build ``` 打包完成后,会在项目根目录下生成一个dist目录,里面包含了打包后的文件。 我们可以将dist目录中的文件上传到服务器,并配置好Web服务器,以便访问我们的后台管理系统。 至此,我们就完成了基于vue-admin-template的后台管理系统的搭建。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值