آموزش جاوااسکریپت › انجمن ها › Nodejs › دانلود فایل
- این موضوع خالی است.
-
نویسندهنوشتهها
-
همایونمیهمان
سلام
من یه api ساده نود دارم که قراره یه فایل که نزدیک به 5 گیگ را دانلود کنه و فایل روی یه سروری دیگه است که برنامه نود ما قراره با مثلا با axios اون را دانلود کنه و استریم دریافتی را در response بنویسه . تا اینجا اوکیهچرا وقتی آدرس api نود را میدم به Download manger فقط با یک کانکشن اقدام به دانلود می کنه
دلیلش: Range Haader است که استفاده درستش را نمی دونم چطوریه ؟ممنون
این هم کدها
const express = require(‘express’)
const app = express()
const axios = require(‘axios’)const PORT = process.env.PORT || 4000
const URL = “https://upmediaa.upera.tv/2753985-0-HQ_1080.mp4?ref=7wIA”app.get(‘/’, (req, res) => {
downloadUsingAxios(res, URL)
})const downloadUsingAxios = async (res, downloadUrl, chunkSize = 10 << 20) => {
let offset = 0, length = 0;
await axios({
method: “HEAD”,
url: downloadUrl
}).then(response => {
length = response.headers[“content-length”];
});res.set({
“content-disposition”: ‘attachment; filename=”big_buck_bunny_720p_5mb.mp4″‘,
“content-type”: “application/octet-stream”,
“content-length”: length,
})const { data } = await axios({
method: ‘GET’,
url: downloadUrl,
responseType: ‘stream’,
headers: {
‘content-range’:bytes ${offset}-${offset += chunkSize}/${length}
}
})
data.on(‘data’, (chunk) => { res.write(chunk) })data.on(‘close’, function () { res.end(‘success’) })
data.on(‘error’, function () { res.send(‘something went wrong ….’) })
};app.listen(PORT, () => {
console.log(Server is running on port: ${PORT}
)
}) -
نویسندهنوشتهها