前端 JS 经典:上传文件

重点:multipart/form-data 后端识别上传类型必填

1. form 表单上传

html 复制代码
<!-- enctype="multipart/form-data" 这个必填 -->
<form 
    action="http://127.0.0.1:8080/users/avatar" 
    method="post" 
    enctype="multipart/form-data"
>
  <input name="name" type="text" />
  <input id="file" name="files" type="file" />
  <button>提交</button>
</form>
<script>
  const upload = document.getElementById("file");
  upload.onchange = function (value) {
    const fileList = value.target.files;
    console.log(fileList);
  };
</script>

2. js 上传

javascript 复制代码
// 后端上传接口
function updateAvatar(data) {
  return api({
    url: "/users/avatar",
    method: "post",
    // 设置请求头(重点)
    headers: {
      "Content-Type": "multipart/form-data",
    },
    data,
  });
}

let cutDown = (data) => {
  // 构建 form 表单;
  let formData = new FormData();
  let { file } = data;
  console.log(data);
  // file 参数命名和后端一致
  formData.append("file", file);
  updateAvatar(formData).then((res) => {
    console.log(res);
  });
};
相关推荐
Jinuss18 分钟前
Vue3源码reactivity响应式篇之computed计算属性
前端·vue3
落日沉溺于海18 分钟前
React From表单使用Formik和yup进行校验
开发语言·前端·javascript
知识分享小能手20 分钟前
React学习教程,从入门到精通, React 新创建组件语法知识点及案例代码(11)
前端·javascript·学习·react.js·架构·前端框架·react
会豪23 分钟前
工业仿真(simulation)--前端(五)--标尺,刻度尺
前端
会豪24 分钟前
工业仿真(simulation)--前端(四)--画布编辑(2)
前端
an__ya__26 分钟前
Vue数据响应式reactive
前端·javascript·vue.js
苦逼的搬砖工29 分钟前
Flutter UI Components:闲来无事,设计整理了这几年来使用的UI组件库
前端·flutter
想买Rolex和Supra的凯美瑞车主31 分钟前
Taro + Vite 开发中 fs.allow 配置问题分析与解决
前端
ruanCat32 分钟前
使用 vite 的 base 命令行参数来解决项目部署在 github page 的路径问题
前端·github
Codebee37 分钟前
使用Qoder 改造前端UI/UE升级改造实践:从传统界面到现代化体验的华丽蜕变
前端·人工智能