vue2elementui怎么把文件url地址传到后端
时间: 2024-01-25 13:04:42 浏览: 23
可以使用axios来发送POST请求将文件url地址传到后端。具体步骤如下:
1. 在前端页面上,通过input[type=file]元素选择要上传的文件,并使用FileReader对象读取文件内容,将文件内容转换成base64编码的字符串。
2. 将base64编码的字符串发送到后端,后端将其解码成文件并保存。
下面是一个示例代码:
```
// HTML
<input type="file" @change="onFileChange">
// JS
import axios from 'axios'
export default {
methods: {
async onFileChange(event) {
const file = event.target.files[0]
const reader = new FileReader()
reader.onload = async (e) => {
const content = e.target.result
const formData = new FormData()
// 将base64编码的字符串转换成Blob对象
const blob = await fetch(content).then(r => r.blob())
formData.append('file', blob, file.name)
// 发送POST请求将文件上传到后端
await axios.post('/api/upload', formData)
}
reader.readAsDataURL(file)
}
}
}
```
在后端中,使用类似以下的代码来接收文件:
```
const express = require('express')
const multer = require('multer')
const app = express()
const upload = multer({ dest: 'uploads/' })
app.post('/api/upload', upload.single('file'), (req, res) => {
console.log(req.file) // { fieldname: 'file', originalname: 'example.png', encoding: '7bit', mimetype: 'image/png', destination: 'uploads/', filename: 'a7579eb4ebf3bce4bbd7e41a26c6eacb', path: 'uploads/a7579eb4ebf3bce4bbd7e41a26c6eacb', size: 1000 }
res.send('File uploaded successfully')
})
app.listen(3000, () => console.log('Server started'))
```
在上面的示例中,我们使用multer库来处理文件上传。multer将上传的文件保存在指定的目录下,并将文件信息存储在req.file对象中。