日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

koa --- 使用koa-multer上传文件+elementUI

發布時間:2023/12/10 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 koa --- 使用koa-multer上传文件+elementUI 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

核心代碼

const upload = require('koa-multer') ({dest: './public/images'}); router.post('/upload', upload.single('file'), ctx=>{console.log('file', ctx.req.file);console.log('body', ctx.req.body);ctx.body = '上傳成功'; })

目錄結構如下

基本思路

  • 1.通過瀏覽器訪問url: http://localhost:3000/upload
  • 2.服務器(koa)監聽到對應的路由,調用路由處理函數
  • 3.使用nunjucks模板引擎進行渲染,并返回給瀏覽器
  • 4.瀏覽器渲染完畢后顯示出來.
  • 5.點擊上傳文件->上傳
  • 6.服務端監聽到上傳的POST請求,進行相應的處理并將處理結果返回給前端

總體代碼

  • /upload.js
const koa = require('koa'); const app = new koa(); const router = new require('koa-router')(); const multer = require('koa-multer'); const nunjucks = require('koa-nunjucks-2'); const path = require('path'); const fs = require('fs');// nunjucks的配置 app.use(nunjucks({ext: 'html',path: __dirname,nunjucksConfig: {trimBlocks: true} }));// upload的配置 const upload = multer({dest: 'uploads/' });const types = upload.single('avatar'); router.get('/upload', async (ctx, next) => {await ctx.render('upload') })router.post('/profile', types, async (ctx, next) => {const { originalname, path: out_path, mimetype} = ctx.req.file;let newName = out_path + path.parse(originalname).ext;let err = fs.renameSync(out_path, newName);let result;if(err){result = JSON.stringify(err);} else {result = `<h1>upload success</h1>`;}ctx.body = result; });app.use(router.routes());app.listen(3000, async () => {console.log('Server is running at http://localhost:3000'); })
  • /upload.html
<!DOCTYPE html> <html lang="en"><head><meta charset="UTF-8"><title>Document</title> </head><body><form method="post" action="/profile" enctype="multipart/form-data">選擇圖片: <input name="avatar" id="upfile" type="file" /><input type="submit" value="提交" /></form> </body></html>

Element-ui組件(前端)文件上傳

<!DOCTYPE html> <html lang="en"> <head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta http-equiv="X-UA-Compatible" content="ie=edge"><script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script><script src="https://unpkg.com/element-ui/lib/index.js"></script><link rel="stylesheet" href="https://unpkg.com/element-ui/lib/theme-chalk/index.css"><style>.avatar-uploader .el-upload{border: 1px dashed #d9d9d9;border-radius: 6px;cursor: pointer;position: relative;}.avatar-uploader-icon{font-size: 28px;color: #8c939d;width: 178px;height: 178px;line-height: 178px;text-align: center;}.avatar{width: 178px;height: 178px;display: block;}</style><title>文件上傳</title> </head> <body><div id="app"><!-- ajax方式上傳--><el-uploadclass="avatar-uploader"action="http://localhost:3000/users/upload":show-file-list="false":on-success="handleAvatarSuccess":before-upload="beforeAvatarUpload"><img v-if="imageUrl" :src="imageUrl" class="avatar" /><i v-else class="el-icon-plus avatar-uploader-icon"></i></el-upload></div><script>var app = new Vue({el:"#app",data(){return {imageUrl:""};},methods: {handleAvatarSuccess(res, file){this.$message.success("上傳頭像成功");this.imageUrl = URL.createObjectURL(file.raw);},beforeAvatarUpload(file) {const isJPG = file.type === 'image/jpeg';const isLt2M = file.size / 1024 / 1024 < 2;if(!isJPG){this.$message.error("上傳頭像圖片只能是 JPG 格式!");}if(!isLt2M){this.$message.error("上傳頭像圖片大小不能超過 2MB!");}return isJPG && isLt2M;}},})</script> </body> </html>

總結

以上是生活随笔為你收集整理的koa --- 使用koa-multer上传文件+elementUI的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。