javascript - 在客户端保存 Javascript FormData() 对象
问题描述
我有一个 html 页面,其中包含一个带有一些文本和文件输入元素的表单元素。
这是使用此处建议的方法通过 ajax 调用向服务器提交的:如何异步上传文件?
正如您在上述链接的引用页面中看到的那样,FormData()对象用作输入数据的容器,我已经成功完成了这项工作。
但是现在我们想创建一个包含这些 html 元素的新页面,将文本和文件输入保存在客户端(Cookie 或 Local Strorage 或......),稍后在另一个页面上进行 ajax 提交。
我无法保存新的 FormData()在 cookie 或本地存储中;保存的是一个小字符串:“[object FormData]”,而不是输入的文件和字符串。
我也尝试使用 JSON.stringify() 没有成功;它只是返回了一个空的 JSON("{}")。
(代码使用 jQuery 选择器)
var postData = new FormData($(form)[0]);
// var sPostedData = JSON.stringify(postData); // returns: "{}"
var myStorage = window.localStorage; // returns: "[object FormData]"
myStorage.setItem("contentOrder", postData);
请帮忙,我应该如何在我的客户端保存这个对象?
解决方案
要从表单数据中获取文件,请使用formData.get('file')
wherefile
是输入的名称。返回的对象将是 Blob 类型(请参阅如何获取其内容)。
完整的例子可以在这个小提琴中找到:https ://jsfiddle.net/skm5m467/1/
推荐阅读
- python - SQL Alchemy - 将日期时间设置为字符串并获取日期?
- node.js - 尝试使用节点肥皂客户端发送带有 CDATA 的 XML,但没有成功
- java - 无法在 IntelliJ 上使用 2.2.1.BUILD-SNAPSHOT 运行 Spring Initializr
- r - 将最接近的值返回到 R 中的特定列
- android - 如何在 ConstrainLayout 中的两个视图之间添加百分比边距
- java - Docker compose Redis 和 Spring boot app: java.net.ConnectException: Connection denied (Connection denied)",
- react-native - React Native Expo 在错误的地方寻找 node_modules
- r - Rstudio 中 dplyr 的“bind_rows”期间数据层次结构中缺少名称 - 获取 Okex Ticker
- c - 如何处理 roslaunch 期间发生的 RLException 错误?
- node.js - 将原始 http 响应转换为 Koa 兼容对象?