js文件上传相关知识点:如何直接上传文件夹,如果获取上传文件的文件夹信息

最近在做项目的过程中遇到一个需求: 要求直接上传文件夹及其文件夹下的所有内容, 并且保留文件夹中相关的嵌套信息。

做了一些调研,总结如下:

  1. 如何直接上传文件夹? 使用webkitdirectory属性,类似mutiple属性一样的。但这个属性没有官方规范,所以使用时需要注意一下。
    在这里插入图片描述

  2. 如何获取上传文件的文件夹信息?

<body>
    <input type="file" id="file" webkitdirectory>
    <script>
        const inputElement = document.getElementById("file");
        const onFileChange = (e) => {
            console.log(e.target.files)
        };
        inputElement.addEventListener("change", onFileChange, false);
    </script>
</body>

得到的file的结构如下:

在这里插入图片描述
我上传的文件夹结构如下:

可以看到,我们能通过webkitRelativePath获取到文件夹结构相关的信息,把得到的值.split("/")一下,然后根据自己的实际需求去解析就好啦~ 因为文件,文件夹命名不允许出现“/”字符,所以可以不用担心split("/")会出现什么错误~

  1. 前端如何获取文件上传进度相关的信息?
    前端获取上传进度信息
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
JavaScript 本身是不能将文件保存到指定的文件夹中的,这是由于浏览器的安全机制所限制的。如果 JavaScript 能够随意地在用户的计算机上创建和操作文件,那么就会带来很大的安全风险。 不过,你可以使用一些技术来实现类似的功能。例如,可以使用服务器端的脚本语言(如 PHP、Node.js 等)来接收前端上传的文件,并将其保存到指定的文件夹中。具体的实现方式,可以参考以下步骤: 1. 在前端页面中,使用 `input` 元素的 `type="file"` 属性创建一个文件上传框,让用户选择要上传的文件。 ```html <input type="file" id="fileInput"> ``` 2. 使用 JavaScript 获取上传框中选择的文件,并将其发送到服务器端。 ```javascript var fileInput = document.getElementById('fileInput'); var file = fileInput.files[0]; var xhr = new XMLHttpRequest(); xhr.open('POST', '/upload', true); var formData = new FormData(); formData.append('file', file); xhr.send(formData); ``` 3. 在服务器端接收上传的文件,并将其保存到指定的文件夹中。 以 Node.js 为例,可以使用 `fs` 模块中的 `createWriteStream` 方法来创建一个可写流,将上传的文件写入到指定的文件夹中。 ```javascript const fs = require('fs'); const path = require('path'); const express = require('express'); const app = express(); app.post('/upload', (req, res) => { const file = req.files.file; const filePath = path.join(__dirname, 'uploads', file.name); const writeStream = fs.createWriteStream(filePath); file.pipe(writeStream); writeStream.on('finish', () => { res.send('上传成功!'); }); }); app.listen(3000, () => { console.log('服务器启动成功!'); }); ``` 在这个例子中,我们将上传的文件保存到了 `uploads` 文件夹中。当文件上传完成后,服务器会返回一个成功的响应。需要注意的是,这里使用了 `pipe` 方法将文件的可读流和可写流连接起来,实现了文件的写入操作。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值