首页  >  问答  >  正文

如何在内存中创建文件供用户下载,而不是通过服务器?

<p>有没有办法在客户端创建一个文本文件并提示用户下载它而不与服务器进行任何交互?</p> <p>我知道我无法直接写入他们的计算机(安全性等),但我可以创建文件并提示他们保存吗?</p>
P粉231112437P粉231112437446 天前509

全部回复(2)我来回复

  • P粉473363527

    P粉4733635272023-08-24 17:11:36

    适用于 HTML5 浏览器的简单解决方案...

    function download(filename, text) {
      var element = document.createElement('a');
      element.setAttribute('href', 'data:text/plain;charset=utf-8,' + encodeURIComponent(text));
      element.setAttribute('download', filename);
    
      element.style.display = 'none';
      document.body.appendChild(element);
    
      element.click();
    
      document.body.removeChild(element);
    }
    form * {
      display: block;
      margin: 10px;
    }
    <form onsubmit="download(this['name'].value, this['text'].value)">
      <input type="text" name="name" value="test.txt">
      <textarea name="text"></textarea>
      <input type="submit" value="Download">
    </form>

    使用

    download('test.txt', 'Hello world!');

    回复
    0
  • P粉727531237

    P粉7275312372023-08-24 13:05:14

    您可以使用数据 URI。浏览器支持各不相同;请参阅维基百科。示例:

    <a href="data:application/octet-stream;charset=utf-16le;base64,//5mAG8AbwAgAGIAYQByAAoA">text file</a>

    八位字节流用于强制下载提示。否则,它可能会在浏览器中打开。

    对于 CSV,您可以使用:

    <a href="data:application/octet-stream,field1%2Cfield2%0Afoo%2Cbar%0Agoo%2Cgai%0A">CSV Octet</a>

    尝试jsFiddle 演示

    回复
    0
  • 取消回复