#node.js #file-upload #ipfs #directory-upload
#node.js #загрузка файла #ipfs #каталог-загрузка
Вопрос:
Каждый раз, когда я пытался загрузить каталог, он выдает мне эту ошибку
AbortError: The user aborted a request. at abort (C:usersanikdesktopappnode_modulesnode-fetchlibindex.js:1418:16) at AbortSignal.abortAndFinalize (C:usersanikdesktopappnode_modulesnode-fetchlibindex.js:1433:4) at AbortSignal.dispatchEvent (C:usersanikdesktopappnode_modulesevent-target-shimdistevent-target-shim.js:818:35) at abortSignal (C:usersanikdesktopappnode_modulesabort-controllerdistabort-controller.js:52:12) at AbortController.abort (C:usersanikdesktopappnode_modulesabort-controllerdistabort-controller.js:91:9) at AbortSignal.onAbort (C:usersanikdesktopappnode_modulesany-signalindex.js:13:16) at AbortSignal.dispatchEvent (C:usersanikdesktopappnode_modulesevent-target-shimdistevent-target-shim.js:818:35) at abortSignal (C:usersanikdesktopappnode_modulesabort-controllerdistabort-controller.js:52:12) at AbortController.abort (C:usersanikdesktopappnode_modulesabort-controllerdistabort-controller.js:91:9) at AbortSignal.onAbort (C:usersanikdesktopappnode_modulesany-signalindex.js:13:16) { type: 'aborted', message: 'The user aborted a request.' }
Я не понимаю, почему возникает эта ошибка. Я пробовал отладку, но не мог понять.
app.post("/upload", async (req, res) => {
if(req.files.upload) {
// console.log(req.files.upload);
let result = folder_upload(req);
}
res.render("transfer");
});
async function folder_upload(req) {
const allFiles = req.files.upload;
const folder = req.body['upload-file-name'];
console.log(folder);
let ipfsId;
allFiles.forEach(function(item) {
// console.log("item ", item);
try {
const fileDetails = {
path: folder "/" item.name,
content: item
}
const options = {
wrapWithDirectory: true,
progress: (prog) => console.log(`received: ${prog}`)
}
ipfs.add(fileDetails, options) // === [line 1] ===
.then((response) => {
console.log(response);
// CID of wrapping directory is returned last
ipfsId = response[response.length - 1].hash;
console.log(ipfsId);
ipfs.setState({ added_file_hash: ipfsId });
}).catch((err) => { // === [line 2] ===
console.error(err);
});
} catch (error) {
console.log("Error exception -", error);
}
});
}
Во время отладки код останавливается на [строка 1], затем переходит к [строка 2] и выполняет блок catch .
Комментарии:
1. Поскольку вы не указали, какую библиотеку ipfs вы используете в своем примере, весьма вероятно, что ваша библиотека ipfs не поддерживает одновременное добавление нескольких файлов для загрузки. Поэтому, когда вы используете ipfs.add для второго файла, он прервет загрузку первого файла и выдаст ошибку.
2. Он упомянул в названии, которое он использует
ipfs-http-client