SORU
2 EYLÜL 2011, Cuma


İndir NodeJS Server Express kullanarak bir dosya

Muhtemelen aptalca bir soru ama nasıl makinem için bilgisayarıma bir dosya İndirebilirim nodeJS server bir sayfa erişen?

Bu ExpressJS kullanıyorum ve bu çalışıyordum:

app.get('/download', function(req, res){

var file = fs.readFileSync(__dirname   '/upload-folder/dramaticpenguin.MOV', 'binary');

res.setHeader('Content-Length', file.length);
res.write(file, 'binary');
res.end();
});

Ancak dosya adı ve dosya tipi ( uzantısı) alamıyorum. Kimsenin bana bu konuda yardım edebilir mi?

Çok teşekkür ederim

CEVAP
2 EYLÜL 2011, Cuma


Tarayıcınız ile ilgili olarak, dosyanın adı'', yani başka bir HTTP başlığını kullanarak daha fazla bilgi vermen gerekiyor. download sadece

res.setHeader('Content-disposition', 'attachment; filename=dramaticpenguin.MOV');

Ayrıca bu gibi mıme tipi bir göndermek isteyebilirsiniz:

res.setHeader('Content-type', 'video/quicktime');

Eğer bir şey daha derinlemesine istiyorsanız, işte burada.

var path = require('path');
var mime = require('mime');

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);
});

Ne olursa olsun sizin gibi üstbilgi değeri ayarlayabilirsiniz. Bu durumda, dosyanın mıme tipi olduğunu kontrol etmek mıme tipi kitaplık https://github.com/bentomas/node-mime, kullanıyorum.

Burada dikkat edilmesi gereken bir başka önemli şey, bir kod readStream kullanmak için değiştirdim. Bu 'Sync' in adını düğüm zaman uyumsuz olması gerekiyordu çünkü kaşlarını çattı. herhangi bir yöntem kullanarak, çünkü bir şeyler yapmak çok daha iyi bir yoldur

Güncelleme

Bu hayatı daha kolay hale getirmek için has a helper Express.

app.get('/download', function(req, res){
  var file = __dirname   '/upload-folder/dramaticpenguin.MOV';
  res.download(file); // Set disposition and send it.
});

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • atKristaBradford

    atKristaBrad

    4 Aralık 2010
  • bashirsultani

    bashirsultan

    22 Mart 2010
  • EminemMusic

    EminemMusic

    9 ŞUBAT 2007