जेव्हा 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 अंतर्गत वापरली आणि लिहिली गेली, असे नाही की ती अपेक्षित आवृत्ती किंवा दस्तऐवज आहे. अपयश किंवा रद्दीकरण झाल्यास, निवडलेल्या पुनरारंभ धोरणानुसार अर्धवट फाइल ठेवा किंवा काढून टाका. रद्दीकरण संकेत संबंधित विनंती आणि स्ट्रीम क्रिया थांबवू शकतो; पण अनुप्रयोगाने आउटपुटसह काय करावे हे तो ठरवत नाही.

संबंधित लेख