有没有办法在客户端创建文本文件并提示用户下载它,而不与服务器进行任何交互?我知道我不能直接写入他们的机器(安全性和所有),但是我可以创建并提示他们保存它吗?
例如,如果您点击链接:
data:application/octet-stream;base64,SGVsbG8=
浏览器将提示您下载一个文件,该文件由超链接本身中作为base64保存的数据组成.有没有办法在标记中建议默认名称?如果没有,是否有JavaScript解决方案?
我试着打开文件
window.open("file:///D:/Hello.txt");
Run Code Online (Sandbox Code Playgroud)
浏览器不允许以这种方式打开本地文件,可能是出于安全原因.我想在客户端使用该文件的数据.如何在Javascript中读取本地文件?
我有一种情况,我需要让我的用户选择将本地存储在客户端内存中的一些数据保存到磁盘.我目前的解决方法是拥有这样的处理程序
(define-handler (download-deck) ((deck :json))
(setf (header-out :content-type) "application/json"
(header-out :content-disposition) "attachment")
deck)
Run Code Online (Sandbox Code Playgroud)
这完全是它的样子.客户端发送数据,并在本地保存返回的文件.
这看起来很愚蠢.
拜托,请告诉我有一个更好的,更简单的,跨浏览器的方式,让客户以本地数据保存到硬盘的一个文件保存对话框.
我在这个主题上读到的每个答案都说"不,你不能用javascript保存文件"或"是的,Chrome API中有一个半文件化的部分,可能让你在三页中完成".
我知道,出于安全原因,Javascript无法在文件系统中写入数据.我经常读到,用Javascript本地保存数据的唯一方法是使用cookies或localStorage.
但它是可能的,在非常特殊的情况下,当文件被访问本地(通过互联网而不是),将数据写入本地?(没有任何服务器语言,甚至根本没有任何服务器......只是本地浏览HTML文件)
... HTML文件被新内容覆盖了吗?(即按下SAVE时应更新本地 HTML文件).

感谢Javascript,当本地访问HTML页面时,这可以保存文件吗?
注意:我希望能够以静默方式保存,而不是建议下载/保存对话框,用户必须在其中选择下载位置,然后"确定要覆盖"等.
编辑:为什么这个问题?我希望能够做一个HTML/JS记事本,我可以在没有任何服务器的情况下在本地运行(没有apache,没有php).我需要能够轻松保存,而无需处理对话框"你想在哪里下载文件?".
我有一个棘手的问题,我现在已经有一段时间了.
我正在寻找一个解决方案,我可以在没有本地存储的情况下将文件保存到用户计算机,因为本地存储有5MB的限制.我想要"保存到文件"-dialog,但我想保存的数据只能在javascript中使用,我想阻止将数据发送回服务器,然后再次发送.
用例是,正在处理的服务是保存用户数据的压缩和加密块,因此服务器在这些块中没有知识,并且通过将数据发送回服务器,这将导致4倍的流量和服务器正在接收未加密的数据,这会使整个加密无效.
我找到了一个javascript函数,用"保存到文件"-dialog将数据保存到用户计算机,但是已经停止了这方面的工作并且不完全支持.就是这样:http://www.w3.org/TR/file-writer-api/
因为我没有window.saveAs,从Blob对象保存数据而不将所有内容发送到服务器的方法是什么?
如果我能得到一个提示,搜索什么,那将会很棒.
我知道这很有效,因为MEGA正在这样做,但我想要自己的解决方案:)
如何从本地PouchDB数据库导入/导出数据库?我需要保存我的本地数据库并在不同的平台上打开它.服务器端没有CouchDB.
根据caniuse,在Microsoft Edge build 10547+中支持元素的download属性,但不支持IE或Safari.<a>
如何在不使用<a>带download属性集的元素或服务器的情况下下载文件对象?
<!DOCTYPE html>
<html>
<head>
<title> </title>
<meta charset=utf-8>
</head>
<body>
<table>
<tr>
<th>A</th>
<th>B</th>
<th>C</th>
</tr>
<tr>
<td>Line #1</td>
<td>SLTD</td>
<td>32</td>
</tr>
<tr>
<td>Line #2</td>
<td>MKTD</td>
<td>68</td>
</tr>
<tr>
<td>Line #3</td>
<td>LRTD</td>
<td>55</td>
</tr>
<tr>
<td>Line #4</td>
<td>HAD</td>
<td>47</td>
</tr>
</table>
<button>Export to text file</button>
<script>
var theFirstChilds = document.querySelectorAll('table tr td:first-of-type'), text, i;
text = "";
for (i = 0; i < theFirstChilds.length; ++i) {
text = text + theFirstChilds[i].innerText;
}
console.log(text);
var button = document.getElementsByTagName("button")[0];
button.addEventListener("click", function() {
//alert("I …Run Code Online (Sandbox Code Playgroud) 我正在研究网络音频 API。我尝试使用 Web Audio API 录制音频文件,保存录制的块,然后使用 python matplotlib 绘制同一块的频谱。
播放的音频文件包含从 2KHz 到 20KHz 递增的频率。
chrome 的音频录制似乎是正确的,我可以通过音频频谱正确地看到它。
但是当从 safari 录制音频时,12 Khz 之后似乎有一个截止滤波器。
单击按钮时调用 Web 音频代码函数 start_rec()
var samplerate = 48000;
var audio_engine_var = {};
var samples = {
audio_samples: [],
samplerate: samplerate
}
function start_rec() {
audio_engine_var.context = new AudioContext({sampleRate:samplerate});
navigator.mediaDevices.getUserMedia(
{ audio: {
echoCancellation: false,
sampleRate: 48000
} }
).then( function (stream) {
audio_engine_var.stream = stream;
audio_engine_var.track = audio_engine_var.stream.getAudioTracks()[0];
audio_engine_var.track.applyConstraints(
{
echoCancellation: false,
sampleRate: 48000
}
);
audio_engine_var.scriptProcessor = audio_engine_var.context.createScriptProcessor(1024, …Run Code Online (Sandbox Code Playgroud)