使用JavaScript实现保存文件,用户可以自己选择本地路径

一句话:使用File System Access API

但是,此API目前仍处于实验阶段,可能并不在所有浏览器中都得到完全支持。

浏览器的权限是很低的,是不能与操作系统实现交互,只有少量的api可以与操作系统交互,例如文件上传。但是,软件是有很高的权限的,例如,迅雷下载就可以轻松实现,下载到指定目录。

但是,我们可以发现,在某度图片上,右键,可以选择另存为,就能够弹出本地文件目录,不禁让我们深思,到底是怎么实现的,但没有查到,kukuku,不管了,给出我们的实现方法。

<!DOCTYPE html>
<html>
<head>
  <title>选择保存目录示例</title>
</head>
<body>
  <h2>选择保存目录示例</h2>

  <button onclick="saveFile()">保存文件</button>

  <script>
    async function saveFile() {
      try {
        const opts = {
          types: [
            {
              description: '文件',
              accept: {
                'text/plain': ['.txt'],
                'application/pdf': ['.pdf'],
                'image/jpeg': ['.jpg', '.jpeg'],
                'image/png': ['.png']
              }
            }
          ],
          excludeAcceptAllOption: true
        };

        const handle = await window.showSaveFilePicker(opts); // 打开保存文件对话框
        const writable = await handle.createWritable(); // 创建可写入的文件对象

        // 在这里写入文件内容
        await writable.write('这是文件的内容');
        await writable.close();

        console.log('文件保存成功');
        windows.alert('success');
      } catch (error) {
        console.error('文件保存失败:', error);
      }
    }
  </script>
</body>
</html>
  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 9
    评论
在Web中选择文件路径保存时,可以通过以下步骤实现: 1. 添加文件输入框:在HTML上,使用<input type="file">元素来创建一个文件选择框。可以通过设置accept属性来指定允许选择文件类型。 2. 处理文件选择事件:通过JavaScript,监听文件输入框的change事件。当用户选择了一个文件后,该事件将触发。 3. 获取文件路径:在change事件的处理函数中,可以通过访问文件输入框的value属性来获取用户选择文件路径。这个路径通常是一个本地文件系统的路径,对于安全性的考虑,浏览器并不允许通过JavaScript直接访问用户文件系统。 4. 上传文件:如果需要将选择文件上传到服务器,可以使用XMLHttpRequest或fetch API来发送一个异步的HTTP请求。通过FormData对象,可以将文件构建成一个可提交的表单数据。 5. 文件路径保存:如果需要在客户端保存文件路径,可以使用LocalStorage或Cookies等机制来存储。但需要注意的是,这些路径只在客户端有效,如果需要在不同的设备或浏览器中获取到相同的文件路径,需要在用户登录状态下记录文件路径信息。 需要注意的是,由于Web的安全性考虑,浏览器对于文件路径的访问是有限制的,只能通过用户的主动选择来获取文件路径。同时,浏览器还会对上传的文件大小进行限制,以避免意外或恶意上传大文件。在处理文件路径时,应该考虑到这些限制,并给用户提供友好的提示和错误处理。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值