将文件列表保存到 $.cookie
Saving FileList to $.cookies
我有一个这样的文件列表:
FileList {0: File, 1: File, 2: File, File…}
刷新页面后,我需要记住这些文件。如何将它们保存到饼干中?(或者有没有更好的方法?现在我这样做$.cookie("result", files); files = $.cookie("result");
但这得到了我无法解析的 [对象文件列表]。将files
转换为JSON也不起作用。
任何想法如何保存文件列表,以便在页面刷新后可以循环它?
编辑:也许我应该注意,我从用户输入中获取文件列表,例如"选择文件"。
分配文件:
网页部分:
<input type="file" id="files" name="file" multiple />
JS部分:
$('#files').on('change', readFiles);
function readFiles(event) {
var files = event.target.files; //has FileList {0: File, 1: File, 2: File, File…}
$.cookie.json = true; //converts FileList to json (is correct).
$.cookie("result", files); //cookie registering also works (atleas with strings)
files = $.cookie("result"); //get undefined as a result
for (var i = 0, f; f = files[i]; i++) {
var reader = new FileReader();
reader.readAsText(f, 'utf-8');
}
}
在原始代码中,代替:
reader.readAsText(f, 'utf-8');
你想要:
reader.readAsText(f.name, 'utf-8');
如果尚未打开它,则可能需要 JSON 选项,该选项会自动将对象转换为存储上的 JSON 字符串,然后在检索时自动转换为对象。它看起来像:
$.cookie.json=true;
这是文档:https://github.com/carhartl/jquery-cookie/tree/v1.4.1#json
注意:虽然根据规范,每个 cookie 的最大大小是无限的,但实际上它因浏览器而异。如果列表中有 150 个文件,则可能已达到限制,并且$.cookie
对象拒绝该值。有关最大大小的更多信息,请参阅此处:网络浏览器 cookie 密钥的最大大小是多少?
要避免此限制,请划分列表或使用网络存储。
更好的解决方案是通过GET或POST将文件列表存储在服务器上,并让服务器提供允许检索的会话cookie。如果使用 PHP,请参阅 PHP 会话。
相关文章:
- 按下按钮时保存cookie
- 如何在Javascript中将单选按钮值保存到cookie中
- Cookie 在 Spotify (Javascript) 中调用 ajax 后未保存
- 单击时将类添加到 ancer 标签并使用 cookie 保存
- Javascript 不会保存 cookie
- 大规模保存cookie的最佳方式是什么
- 如何将jQuery克隆的文本输入保存到cookie或html5存储中
- Cookie,用于保存包括一个变量在内的多个值
- 在js中有一个cookie保存序列化的svgs
- Cookie 保存/读取无法按预期工作
- 如何在 javascript 的信息窗口中使用 cookie 保存复选框状态
- Javascript使用javascript按钮更改CSS页面,并根据cookie保存
- jquery:使用cookie保存拖放位置
- 在网页中使用javascript中的cookie保存用户选择的背景图像
- 表单值在提交后作为cookie保存&页面更改
- jQuery-切换元素并用cookie保存
- 在实现cookie保存状态到JQuery切换时遇到麻烦
- 如何在游戏中使用cookie保存分数?
- NPM tough-cookie:保存一个cookie,然后转储它
- Javascript cookie保存和加载