Axios ਨੇ ਸਟ੍ਰੀਮ ਵਾਪਸ ਕੀਤੀ। ਫ਼ਾਈਲ ਅਜੇ ਵੀ ਲਿਖੀ ਜਾ ਰਹੀ ਹੈ।
Node ਵਿੱਚ Axios ਨਾਲ SOCKS ਏਜੰਟ ਰਾਹੀਂ ਡਾਊਨਲੋਡ ਕਰਦੇ ਸਮੇਂ ਨੈੱਟਵਰਕ ਪੜ੍ਹਨ ਅਤੇ ਮੰਜ਼ਿਲ 'ਤੇ ਲਿਖਣ ਦੋਹਾਂ ਦੀ ਉਡੀਕ ਕਰੋ।
ਜਦੋਂ Axios responseType: 'stream' ਨਾਲ Node ਬੇਨਤੀ ਹੱਲ ਕਰਦਾ ਹੈ, ਤਾਂ ਬਾਡੀ ਵਰਤੋਂ ਲਈ ਤਿਆਰ ਹੁੰਦੀ ਹੈ। ਪਰ ਫ਼ਾਈਲ ਅਜੇ ਪੂਰੀ ਨਹੀਂ ਹੋਈ। ਇਸ ਦੀ ਮੰਜ਼ਿਲ ਵੱਲ ਤਬਦੀਲੀ ਦੀ ਉਡੀਕ ਕਰੋ:
import { createWriteStream } from 'node:fs';
import { pipeline } from 'node:stream/promises';
const response = await client.get(url, { responseType: 'stream' });
await pipeline(response.data, createWriteStream(partPath));ਇਹ ਪਹਿਲਾਂ ਹੀ ਸੰਰਚਿਤ ਕਲਾਇੰਟ ਵਰਤਦਾ ਹੈ। ਇਸ ਦੇ ਅਡੈਪਟਰ ਨੂੰ ਚੁਣਿਆ ਪ੍ਰੌਕਸੀ ਜਾਂ SOCKS ਏਜੰਟ ਸਮਰਥਨ ਕਰਨਾ ਚਾਹੀਦਾ ਹੈ; Axios ਦਾ ਅੰਦਰੂਨੀ HTTP ਪ੍ਰੌਕਸੀ ਵਿਕਲਪ ਅਤੇ SOCKS ਏਜੰਟ ਵੱਖਰੇ ਤੰਤਰ ਹਨ। URL, ਸਮਾਂ ਸੀਮਾਵਾਂ ਅਤੇ ਰੱਦ ਕਰਨ ਦੀ ਨੀਤੀ ਐਪਲੀਕੇਸ਼ਨ ਦਿੰਦੀ ਹੈ।
ਇਸ ਕਾਰਵਾਈ ਦੀ ਮਲਕੀਅਤ ਵਾਲਾ ਆਰਜ਼ੀ ਰਾਹ ਵਰਤੋ। ਲਿਖਣ ਸਟ੍ਰੀਮ ਬਣਾਉਣ ਤੋਂ ਪਹਿਲਾਂ ਟਕਰਾਅ ਕਿਵੇਂ ਸੰਭਾਲਣੇ ਹਨ ਇਹ ਤੈਅ ਕਰੋ, ਤਾਂ ਜੋ ਅਸਫ਼ਲਤਾ ਤੋਂ ਬਾਅਦ ਸਫ਼ਾਈ ਕਿਸੇ ਹੋਰ ਦੀ ਫ਼ਾਈਲ ਨਾ ਹਟਾਏ। ਜਾਣ-ਬੁੱਝ ਕੇ ਮੁੜ ਸ਼ੁਰੂ ਕਰਨ ਲਈ ਆਪਣੀ ਨੀਤੀ ਚਾਹੀਦੀ ਹੈ।
pipeline ਪੜ੍ਹਨ ਅਤੇ ਲਿਖਣ ਦਾ ਤਾਲਮੇਲ ਕਰਦਾ ਹੈ ਅਤੇ ਉਨ੍ਹਾਂ ਦੀ ਅਸਫ਼ਲਤਾ ਦੱਸਦਾ ਹੈ। response.data.pipe(file) ਬੁਲਾ ਕੇ ਤੁਰੰਤ ਸਫ਼ਲਤਾ ਲੌਗ ਕਰਨਾ ਉਹ ਪੂਰਤੀ ਬਿੰਦੂ ਛੱਡ ਦਿੰਦਾ ਹੈ। ਵੈਧ HTTP ਜਵਾਬ ਆਉਣ ਤੋਂ ਬਾਅਦ ਵੀ ਨੈੱਟਵਰਕ ਰੁਕਾਵਟ ਜਾਂ ਭਰੀ ਡਿਸਕ ਹੋ ਸਕਦੀ ਹੈ; ਜਵਾਬ ਦਾ ਸੰਦਰਭ ਅਤੇ ਪ੍ਰਕਿਰਿਆ ਰੋਕਣ ਵਾਲੀ ਗਲਤੀ ਰੱਖੋ।
ਉਡੀਕੀ ਜਾ ਰਹੀ ਪ੍ਰਕਿਰਿਆ ਸਫਲ ਹੋਣ ਤੋਂ ਬਾਅਦ, ਐਪਲੀਕੇਸ਼ਨ ਦੀਆਂ ਆਰਟੀਫੈਕਟ ਜਾਂਚਾਂ ਕਰੋ ਅਤੇ ਫਿਰ ਅੰਤਿਮ ਨਾਮ ਪ੍ਰਕਾਸ਼ਿਤ ਕਰੋ। ਪੂਰਤੀ ਦਾ ਅਰਥ ਹੈ ਕਿ ਸਟ੍ਰੀਮ ਇਨ੍ਹਾਂ API ਅਧੀਨ ਵਰਤੀ ਅਤੇ ਲਿਖੀ ਗਈ, ਇਹ ਨਹੀਂ ਕਿ ਇਹ ਉਮੀਦ ਕੀਤੀ ਰਿਲੀਜ਼ ਜਾਂ ਦਸਤਾਵੇਜ਼ ਹੈ। ਅਸਫ਼ਲਤਾ ਜਾਂ ਰੱਦ ਕਰਨ 'ਤੇ, ਚੁਣੀ ਮੁੜ-ਸ਼ੁਰੂਆਤ ਨੀਤੀ ਅਨੁਸਾਰ ਅੰਸ਼ਿਕ ਫ਼ਾਈਲ ਰੱਖੋ ਜਾਂ ਹਟਾਓ। ਰੱਦ ਕਰਨ ਦਾ ਸੰਕੇਤ ਸੰਬੰਧਿਤ ਬੇਨਤੀ ਅਤੇ ਸਟ੍ਰੀਮ ਕਾਰਵਾਈਆਂ ਰੋਕ ਸਕਦਾ ਹੈ; ਪਰ ਐਪਲੀਕੇਸ਼ਨ ਨੇ ਆਉਟਪੁੱਟ ਨਾਲ ਕੀ ਕਰਨਾ ਹੈ ਇਹ ਤੈਅ ਨਹੀਂ ਕਰਦਾ।