前端 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);
  });
};
相关推荐
IT_陈寒4 分钟前
Vite静态资源引用这个坑我踩得有点疼
前端·人工智能·后端
程序员黑豆1 小时前
鸿蒙应用开发:AttributeModifier 使用教程
前端·harmonyos
codeniu1 小时前
TRAE Work 实战 | 从"有个想法"到线上Demo,我全程只靠对话就完成了
前端·trae
妙码生花1 小时前
从 PHP 到 AI + Golang,程序员自救转型手记(五十):增加管理员角色组管理
前端·后端·ai编程
飘尘1 小时前
一文讲清楚前端面试会问到的所有缓存
前端·javascript·面试
老王以为1 小时前
走进 AI Agent
前端·人工智能·架构
酷在前行1 小时前
【R生态】PERMANOVA 进阶实战:距离选择、PERMDISP、两两比较与受限置换(保姆级教程)
开发语言·r语言
妙码生花1 小时前
从 PHP 到 AI + Golang,程序员自救转型手记(五十一):管理员和角色组的关联
前端·后端·ai编程
ThsPool1 小时前
【ENVI二次开发学习整理 04】ENVI功能扩展与二次开发
java·前端·javascript
犀利的毛豆豆1 小时前
vue和react的响应式有什么区别?
前端