使用 Javascript 动态保存内容
我想让我的客户能够出现一个保存对话框来保存我存储在 Javascript 中的数据。我无法将它们定向到现有文件,因为您无法直接使用 Javascript 修改文件系统。
是否可以直接发送数据进行保存(当然是通过保存对话。否则,这将是一个疯狂的利用)。我正在努力让我的用户可以在我的网站上创建内容并能够下载它。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
发布评论
评论(5)
在风中等你 2024-12-09 01:44:18
有几种方法可以做到这一点:
服务器端
- 使用 "="">唯一id,并将ID提供给用户,当他想要加载时,他将提供ID,你将为他鞭打数据。
- 帐户系统,假设您有一个帐户系统,您可以将每个表单数据链接到特定用户。
- 以某种方式序列化数据,并将其作为可下载文件提供给用户,然后当他想要恢复时,他将上传该文件,你解析它,并为他显示它。
当然,这两种解决方案都需要 AJAX 解决方案来与服务器通信。
客户端
谜兔 2024-12-09 01:44:18
我想您想将数据保存在客户端计算机上的文件中。
你不能直接这样做,因为 JS 无法访问本地文件系统。
但你可以通过服务器来实现。你会同时
将数据发送到服务器并下载到
客户。下载后会打开通常的“另存为...”对话框,客户端可以在其中
可以指定文件名。
一个可能的具体实现是使用一个进行 POST 的表单
请求 URL save.php
,传递要保存的数据
隐藏的输入字段save_data
。请求的结果是
定向到不可见的 。
<form action="save.php" method="post" target="save_target" onsubmit="save();">
<input type="hidden" id="save_data" name="save_data" value="" />
</form>
<iframe id="save_target" name="save_target" src="#"
style="display:none; width:0; height:0; border:0px solid #fff;">
</iframe>
JS 函数 save()
准备要发送的数据:
function save() {
document.getElementById("save_data").value = ...;
return true; // or false if something wrong
};
服务器上的 PHP 页面 save.php
处理 POST 请求并下载
数据:
$data = $_POST['save_data'];
$size = strlen($data);
$contentType = "text/plain"; // MIME type
$defaultName = "x.txt";
header("Content-Type: $contentType");
header("Content-Disposition: attachment; filename=$defaultName");
header("Content-Length: $size");
echo $data;
~没有更多了~
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
您可以使用带有 dataUrl 的链接来创建保存链接:(这需要您使用 base64 对数据进行编码)
您可以在 http://phpjs.org/functions/base64_encode:358 。
用户需要右键单击该链接并选择“另存为...”将文件保存到其文件系统上。
You could use links with dataUrl to create a save link : (this need you to encode your data using base64)
You can get the base64_encode function at http://phpjs.org/functions/base64_encode:358 .
Users would need to right click the link and choose "save as..." to save the file on their filesystem.