হালনাগাদ
জীবনকে সহজ করার জন্য এক্সপ্রেসের একটি সহায়ক রয়েছে ।
app.get('/download', function(req, res){
const file = `${__dirname}/upload-folder/dramaticpenguin.MOV`;
res.download(file); // Set disposition and send it.
});
পুরানো উত্তর
আপনার ব্রাউজারটি যতটা উদ্বিগ্ন, ফাইলটির নাম কেবল 'ডাউনলোড', সুতরাং আপনাকে অন্য একটি এইচটিটিপি শিরোনাম ব্যবহার করে আরও তথ্য দেওয়া দরকার।
res.setHeader('Content-disposition', 'attachment; filename=dramaticpenguin.MOV');
আপনি মাইম-টাইপ যেমন পাঠাতে চাইতে পারেন:
res.setHeader('Content-type', 'video/quicktime');
আপনি যদি আরও গভীরতর কিছু চান, তবে এখানে যান।
var path = require('path');
var mime = require('mime');
var fs = require('fs');
app.get('/download', function(req, res){
var file = __dirname + '/upload-folder/dramaticpenguin.MOV';
var filename = path.basename(file);
var mimetype = mime.lookup(file);
res.setHeader('Content-disposition', 'attachment; filename=' + filename);
res.setHeader('Content-type', mimetype);
var filestream = fs.createReadStream(file);
filestream.pipe(res);
});
আপনি যা পছন্দ করেন তাতে আপনি শিরোনাম মান সেট করতে পারেন। এই ক্ষেত্রে, আমি মাইম-টাইপ লাইব্রেরি ব্যবহার করছি - নোড-মাইম , ফাইলটির মাইম-টাইপ কি তা পরীক্ষা করতে।
এখানে অন্য একটি গুরুত্বপূর্ণ বিষয় লক্ষণীয় হ'ল আমি আপনার কোডটি একটি পঠন স্ট্রিম ব্যবহারের জন্য পরিবর্তন করেছি। জিনিসগুলি করার এটি একটি আরও ভাল উপায় কারণ নামের সাথে 'সিঙ্ক' সহ যে কোনও পদ্ধতি ব্যবহার করা ভ্রান্ত হয় কারণ নোডকে অ্যাসিঙ্ক্রোনাস বোঝানো হয়।