Я пытаюсь загрузить внешний файл с помощью axios, а затем передать его в контейнер хранения объектов openstack с помощью pkgcloud. Поток загрузки заканчивается до полной загрузки файла.
async function upload(url, name, extension, container) {
const uploadStream = storage.createClient({
...
}).upload({
container: container,
remote: name + "." + extension,
});
await new Promise(async (resolve) => {
const response = await axios({
method: "GET",
url: url,
responseType: "stream"
})
response.data.pipe(uploadStream)
response.data.on("end", () => {
console.log("Download finished");
})
response.data.on("error", (error: Error) => {
console.log("Download error")
console.log(error);
})
uploadStream.on("finish", () => {
console.log("Upload finished");
resolve();
})
uploadStream.on("error", (error: Error) => {
console.log("Upload error");
console.log(error);
})
})
}
const url = "https://picsum.photos/id/566/600/600";
(async () => {
await upload(url, "mountain", "jpg", "dummy_container")
console.log("Promise resolved");
})()
Порядок событий в соответствии с выводом на консоль следующий:
Download finished
Upload finished
Promise resolved
Upload error
Error: write after end
...