文件上傳接口是 web 開發中常見的需求。Vue 框架為我們提供了簡單易用的上傳組件以及與后端對接的方法,方便我們實現文件上傳功能。
首先,在前端我們需要使用 Vue 的 upload 組件。具體使用方法和示例代碼如下:
<template> <div> <el-upload class="upload-demo" action="/upload" :multiple="false" :on-success="handleSuccess" :before-upload="beforeUpload" :headers="headers" :data="data" :file-list="fileList"> <el-button size="medium" type="primary">點擊上傳</el-button> <div slot="tip" class="el-upload__tip">jpg/png 文件,不超過 2M</div> </el-upload> </div> </template> <script> export default { data() { return { fileList: [], headers: { 'Authorization': 'Bearer ' + getToken() }, data: { 'userId': getUserId() } }; }, methods: { handleSuccess(response, file, fileList) { console.log(response); console.log(file); console.log(fileList); this.fileList = fileList; }, beforeUpload(file) { console.log(file); } } }; </script>
在組件中,我們可以設置上傳接口的地址(action)、上傳文件的數量(multiple)、上傳成功的回調函數(on-success)以及上傳前的數據和頭信息(headers和data)。此外,我們還可以通過設置文件大小和類型的限制,在上傳前對文件進行驗證。
接下來,我們需要在后端編寫文件上傳的接口。這里以 Node.js 為例,示例代碼如下:
const express = require('express'); const app = express(); const multer = require('multer'); const upload = multer({ dest: 'uploads/' }); app.post('/upload', upload.single('file'), (req, res) => { console.log(req.file); res.send('上傳成功!'); }); app.listen(3000, () => { console.log('Example app listening on port 3000!'); });
在后端中,我們使用 multer 庫處理文件上傳請求。通過設置 dest 參數指定文件上傳的存儲路徑。當有文件上傳請求時,通過 upload.single() 方法處理單個文件上傳請求,上傳的文件信息會被儲存在 req.file 中。在處理完上傳請求后返回一個成功提示。
注意,僅僅是文件上傳的接口并不能保證上傳的文件安全,還需要對上傳的文件進行前端和后端的雙重校驗,以確保上傳的文件真實合法。
上一篇vue數量的英文