具体流程
先废话一会 当你知道文字数据怎么前传后的时候 突然传文件是不是脑子一热?被这个坑害惨了 所以来给自己提个醒 也给跟我一样迷惑的解答一下
前端到后端 示意图
Axios 解析
当选择完文件后 双向绑定的配置项会变成一个File
1 2 3 4 5
| data(){ return { img: File } }
|
接着用formData 以key value的方式 把图片放进value里
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| const axios = require('axios'); const formData = new FormData(); formData.append('file', File); formData.append('key1','value1'); formData.append('key2','value2');
const headers = { 'Content-Type': 'multipart/form-data' }; axios.post(`url`, formData, { headers }). then((res) => { }).catch(function (error) { window.alert(error); });
|
key | value |
---|
file | 图片文件 |
key1 | value1 |
key2 | value2 |
PHP解析
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39
| function UploadImg($fill_name){ $allowedExts = array("webp", "jpg", "png"); $temp = explode(".", $_FILES["file"]["name"]); $extension = end($temp); if ((($_FILES["file"]["type"] == "image/webp") || ($_FILES["file"]["type"] == "image/jpg") || ($_FILES["file"]["type"] == "image/png")) && ($_FILES["file"]["size"] < 1024000) && in_array($extension, $allowedExts)) { if ($_FILES["file"]["error"] > 0) { return "错误:" . $_FILES["file"]["error"]; } else { if (file_exists("./$fill_name.$extension")) { return "文件/ID已存在,请勿重复上传"; } else { move_uploaded_file($_FILES["file"]["tmp_name"], "./$fill_name.$extension"); return "成功上传文件"; } } } else { return "文件格式只允许 jpg png webp 或 文件大小超过1M"; } }
|