在JavaScript中实现一次下载多个文件并上传的功能,通常涉及以下几个步骤:
假设你已经有了文件的URL列表,可以使用fetch
API来下载这些文件并存储在本地。
async function downloadFiles(fileUrls) {
const files = [];
for (const url of fileUrls) {
const response = await fetch(url);
const blob = await response.blob();
files.push(blob);
}
return files;
}
使用FormData
对象来构造表单数据,并使用fetch
API上传文件。
async function uploadFiles(files) {
const formData = new FormData();
files.forEach((file, index) => {
formData.append(`file${index}`, file);
});
const response = await fetch('/upload', {
method: 'POST',
body: formData
});
if (response.ok) {
console.log('Files uploaded successfully');
} else {
console.error('Failed to upload files');
}
}
将下载和上传的步骤整合在一起。
async function downloadAndUpload(fileUrls) {
try {
const files = await downloadFiles(fileUrls);
await uploadFiles(files);
} catch (error) {
console.error('Error:', error);
}
}
// 示例使用
const fileUrls = [
'https://example.com/file1.jpg',
'https://example.com/file2.jpg',
'https://example.com/file3.jpg'
];
downloadAndUpload(fileUrls);
async function downloadAndUploadInBatches(fileUrls, batchSize = 5) {
for (let i = 0; i < fileUrls.length; i += batchSize) {
const batch = fileUrls.slice(i, i + batchSize);
const files = await downloadFiles(batch);
await uploadFiles(files);
}
}
downloadAndUploadInBatches(fileUrls);
通过这种方式,可以有效地处理大量文件的下载和上传,避免内存溢出和网络中断等问题。