文件上傳接口是 web 開發(fā)中常見的需求。Vue 框架為我們提供了簡單易用的上傳組件以及與后端對接的方法,方便我們實現(xiàn)文件上傳功能。
首先,在前端我們需要使用 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>
在組件中,我們可以設(shè)置上傳接口的地址(action)、上傳文件的數(shù)量(multiple)、上傳成功的回調(diào)函數(shù)(on-success)以及上傳前的數(shù)據(jù)和頭信息(headers和data)。此外,我們還可以通過設(shè)置文件大小和類型的限制,在上傳前對文件進(jìn)行驗證。
接下來,我們需要在后端編寫文件上傳的接口。這里以 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 庫處理文件上傳請求。通過設(shè)置 dest 參數(shù)指定文件上傳的存儲路徑。當(dāng)有文件上傳請求時,通過 upload.single() 方法處理單個文件上傳請求,上傳的文件信息會被儲存在 req.file 中。在處理完上傳請求后返回一個成功提示。
注意,僅僅是文件上傳的接口并不能保證上傳的文件安全,還需要對上傳的文件進(jìn)行前端和后端的雙重校驗,以確保上傳的文件真實合法。