当前位置: 首页 > article >正文

浅谈 JSON 对象和 FormData 相互转换,打通前端与后端的通信血脉_json转formdata

在这里插入图片描述


formData 请求头:

在这里插入图片描述


formData 负荷:

在这里插入图片描述


通过上面的几张图我们就能大概明白了,前端传的都是二进制数据,两者的 content-type 是不同的,json 我们已经序列化好了,而 formdata 还是需要进行处理。

formdata 的两种格式

  • multipart/form-data:既可以上传文件等二进制数据,也可以上传表单键值对,只是最后会转化为一条信息;
  • x-www-form-urlencoded:只能上传键值对,并且键值对都是间隔分开的。

json 对象转 formData

逐个转换

let obj = {
  id: "001",
  name: "小蓝",
  age: "18",
  sex: "女",
};
const formData = new FormData();
formData.append("id", obj.id);
formData.append("name", obj.name);
formData.append("age", obj.age);
formData.append("sex", obj.sex);
console.log(formData);

所有属性值转换

let obj = {
  id: "001",
  name: "小蓝",
  age: "18",
  sex: "女",
};
const formData = new FormData();
Object.keys(obj).map((key) => {
  formData.append(key, obj[key]);
});
console.log(formData);


formData 对象转 json

var jsonObj = {};
formData.forEach((value, key) => (jsonObj[key] = value));


拓展 – base64 和文件流互转

文件流转 base64

<template>
  <div>
    <input type="file" @change="handleFileChange" />
  </div>
</template>

<script>
export default {
 methods: {
 handleFileChange(event) {
 // 获取用户选择的文件
 const file = event.target.files[0];
 // 创建一个FileReader对象
 const reader = new FileReader();
 // 当文件读取完成后触发的事件处理程序
 reader.onload = () => {
 // 获取文件流
 const base64 = reader.result;
 // 在这里进行base64编码的处理
 console.log(base64);
 };
 // 读取文件流
 reader.readAsDataURL(file);
 },
 },
};
</script>

在这里插入图片描述

base64 转文件流

<template>
  <div>
  </div>
</template>

<script>
export default {
 mounted() {
 // Base64字符串;
 let base64String = "data:image/png;base64"
 base64String = this.convertBase64ToBlob(base64String);
 console.log(base64String);
 },
 methods: {
 convertBase64ToBlob(base64String) {
 // 将Base64解码为二进制数据
 const byteCharacters = atob(base64String.split(",")[1]);
 // 创建一个Uint8Array来存储二进制数据
 const byteArrays = new Uint8Array(byteCharacters.length);
 for (let i = 0; i < byteCharacters.length; i++) {
 byteArrays[i] = byteCharacters.charCodeAt(i);
 }
 // 创建Blob对象
 const blob = new Blob([byteArrays], { type: "text/plain" });
 // 将Blob对象转换为File对象
 const file = new File([blob], "filename", { type: "text/plain" });
 return file;
 },
 },
};
</script>

在这里插入图片描述

相关推荐

⭐ 深入理解qs库:简化你的工作流程


http://www.kler.cn/a/530474.html

相关文章:

  • 41. 缺失的第一个正数
  • 海外问卷调查渠道查,如何影响企业的运营
  • java练习(5)
  • 18.Word:数据库培训课程❗【34】
  • 在GPIO控制器中,配置通用输入,读取IO口电平时,上拉和下拉起到什么作用
  • .Net / C# 分析文件编码 并将 各种编码格式 转为 另一个编码格式 ( 比如: GB2312→UTF-8, UTF-8→GB2312)
  • Baklib推动内容中台与人工智能技术的智能化升级与行业变革
  • Qt 5.14.2 学习记录 —— 이십삼 绘图API
  • MATLAB基础应用精讲-【数模应用】梯度直方图(HOG)(附C++和python代码实现)(二)
  • 攻防世界 php2
  • 物业综合管理系统助力社区服务创新提升管理效率与住户体验
  • Hive 整合 Spark 全教程 (Hive on Spark)
  • [SAP ABAP] Debug Skill
  • JavaScript面向对象编程:Prototype与Class的对比详解
  • 【最后203篇系列】004 -Smarklink
  • 蓝桥杯C语言程序设计赛备赛指南
  • 2025年2月2日(tcp3次握手4次挥手)
  • 【UE】 APlayerState
  • elasticsearch8.15 高可用集群搭建(含认证Kibana)
  • 代码讲解系列-CV(一)——CV基础框架
  • 如何运行Composer安装PHP包 安装JWT库
  • 面试题整理:Java多线程(二)多线程、死锁、乐观锁悲观锁、线程池
  • 002 mapper代理开发方式-xml方式
  • ArkTS渲染控制
  • 31不同整数的技术问题-青训营刷题
  • LeetCode 404.左叶子之和