当前位置:   article > 正文

Element ui图片上传

Element ui图片上传

前言

对于广大小白来说,图片上传简直是上传难,难于上青天!废话不多说,步入正题,您就瞧好吧!

步骤一:前端使用element ui组件(upload上传)

我个人喜欢使用第二个组件:

element ui代码如下:

样式在此我不做过多解释,大家自行调试!

action(必须填写)就是我们图片要上传的地址,待会我会在下面展示我的前端实战代码

show-file-list:是否显示已上传文件列表(这句话不用删也不用管,留着即可)

before-upload :使用 before-upload 限制用户上传的图片格式和大小。(我一般都会删除)

注意!!!

on-success很重要,这个方法是文件上传成功时的钩子,必须借助它实现功能!!!

  1. <el-upload
  2. class="avatar-uploader"
  3. action="https://jsonplaceholder.typicode.com/posts/"
  4. :show-file-list="false"
  5. :on-success="handleAvatarSuccess"
  6. :before-upload="beforeAvatarUpload">
  7. <img v-if="imageUrl" :src="imageUrl" class="avatar">
  8. <i v-else class="el-icon-plus avatar-uploader-icon"></i>
  9. </el-upload>
  10. <style>
  11. .avatar-uploader .el-upload {
  12. border: 1px dashed #d9d9d9;
  13. border-radius: 6px;
  14. cursor: pointer;
  15. position: relative;
  16. overflow: hidden;
  17. }
  18. .avatar-uploader .el-upload:hover {
  19. border-color: #409EFF;
  20. }
  21. .avatar-uploader-icon {
  22. font-size: 28px;
  23. color: #8c939d;
  24. width: 178px;
  25. height: 178px;
  26. line-height: 178px;
  27. text-align: center;
  28. }
  29. .avatar {
  30. width: 178px;
  31. height: 178px;
  32. display: block;
  33. }
  34. </style>
  35. <script>
  36. export default {
  37. data() {
  38. return {
  39. imageUrl: ''
  40. };
  41. },
  42. methods: {
  43. handleAvatarSuccess(res, file) {
  44. this.imageUrl = URL.createObjectURL(file.raw);
  45. },
  46. beforeAvatarUpload(file) {
  47. const isJPG = file.type === 'image/jpeg';
  48. const isLt2M = file.size / 1024 / 1024 < 2;
  49. if (!isJPG) {
  50. this.$message.error('上传头像图片只能是 JPG 格式!');
  51. }
  52. if (!isLt2M) {
  53. this.$message.error('上传头像图片大小不能超过 2MB!');
  54. }
  55. return isJPG && isLt2M;
  56. }
  57. }
  58. }
  59. </script>

这里是我自己的图片上传前端实战代码:

我为组件添加了name属性,相当于给他加了个别名叫做img。

  1. <template>
  2. <div>
  3. <el-upload name="img" class="avatar-uploader"
  4. action="http://127.0.0.1:8700/upload"
  5. :show-file-list="false" :on-success="hanadle_success">
  6. <img v-if="addform.img" :src="addform.img" class="avatar" />
  7. <i v-else class="el-icon-plus avatar-uploader-icon"></i>
  8. </el-upload>
  9. </div>
  10. </template>
  11. <script>
  12. export default {
  13. name: "app",
  14. data() {
  15. return {
  16. addform:{
  17. img:''
  18. }
  19. };
  20. },
  21. methods: {
  22. hanadle_success(res, file, fileList) {
  23. this.addform.img = res.path; //实现单独上传
  24. //下面这个实现多种上传,两个都写上也没事,用不到也不报错
  25. const result = fileList.every((item) => item.status === "success");
  26. if (result) {
  27. fileList.map((item) => {
  28. item.response &&
  29. this.fileList.push({
  30. name: "",
  31. url: item.response.path,
  32. });
  33. return true;
  34. });
  35. }
  36. },
  37. },
  38. };
  39. </script>
  40. <style scoped>
  41. .avatar-uploader .el-upload {
  42. border: 10px dashed gold;
  43. border-radius: 6px;
  44. cursor: pointer;
  45. position: relative;
  46. overflow: hidden;
  47. }
  48. .avatar-uploader .el-upload:hover {
  49. border-color: #409eff;
  50. }
  51. .avatar-uploader-icon {
  52. border: 1px dashed gainsboro;
  53. font-size: 28px;
  54. color: #8c939d;
  55. width: 178px;
  56. height: 178px;
  57. line-height: 178px;
  58. text-align: center;
  59. }
  60. .avatar {
  61. width: 178px;
  62. height: 178px;
  63. display: block;
  64. }
  65. </style>

下面说一下后端代码:

注意记得创建一个upload文件夹用来存储前端存进来的静态资源嗷

  1. const express = require('express')//通过npm i express命令下载模块并导入
  2. const app = express()//创建实例
  3. const multiparty = require('multiparty')//通过npm i multiparty命令下载模块并导入
  4. app.use('/upload',express.static('upload'))//将upload文件作为静态资源文件
  5. app.post('/upload',(req,res)=>{
  6. const form = new multiparty.Form()
  7. form.uploadDir = './upload'
  8. form.parse(req,(err,fields,fiels)=>{
  9. res.send({
  10. //拼接路径,我的端口号是8700
  11. //这里的img对象我前面定义name属性的别名img
  12. path:'http://127.0.0.1:8700/'+fiels.img[0].path
  13. })
  14. })
  15. })
  16. const port = 8700
  17. app.listen(port, () => console.log(`Server running at http://127.0.0.1:${port}`))

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/知新_RL/article/detail/780028
推荐阅读
相关标签
  

闽ICP备14008679号