异步上传文件夹的javascript代码
时间: 2023-08-07 07:05:58 浏览: 47
以下是异步上传文件夹的JavaScript代码示例:
```javascript
async function uploadFolder(url, folderPath) {
const files = await getFiles(folderPath);
const formData = new FormData();
for (const file of files) {
formData.append('files', file);
}
const response = await fetch(url, {
method: 'POST',
body: formData
});
console.log(`Upload completed with status ${response.status}`);
}
async function getFiles(folderPath) {
const files = [];
const entries = await fs.promises.readdir(folderPath, { withFileTypes: true });
for (const entry of entries) {
const fullPath = path.join(folderPath, entry.name);
if (entry.isFile()) {
const file = await fs.promises.readFile(fullPath);
files.push(new File([file], entry.name));
} else if (entry.isDirectory()) {
const subFiles = await getFiles(fullPath);
files.push(...subFiles);
}
}
return files;
}
await uploadFolder('http://example.com/upload', '/path/to/folder');
```
使用`async/await`语法定义异步函数`uploadFolder()`和`getFiles()`,其中`getFiles()`使用`fs.promises`读取文件夹中的所有文件并返回一个`File`对象数组。在`uploadFolder()`中,使用`FormData`创建一个表单数据对象,并将所有文件添加到表单数据中。使用`fetch()`异步上传文件,并打印上传状态。最后使用`await`等待异步上传函数完成。请注意,此示例使用`fs.promises`和`File`对象,这些对象可能不适用于所有JavaScript环境。