Framework Expressjs memiliki metode sendfile (). Bagaimana saya bisa melakukannya tanpa menggunakan seluruh kerangka kerja. Saya menggunakan node-native-zip untuk membuat arsip dan saya ingin mengirimkannya ke pengguna.
113
Berikut adalah contoh program yang akan mengirim myfile.mp3 dengan mengalirkannya dari disk (yaitu, tidak membaca seluruh file ke dalam memori sebelum mengirim file). Server mendengarkan pada port 2000.
[Pembaruan] Seperti yang disebutkan oleh @Aftershock di komentar, util.pump
hilang dan diganti dengan metode pada prototipe Stream yang disebut pipe
; kode di bawah ini mencerminkan hal ini.
var http = require('http'),
fileSystem = require('fs'),
path = require('path');
http.createServer(function(request, response) {
var filePath = path.join(__dirname, 'myfile.mp3');
var stat = fileSystem.statSync(filePath);
response.writeHead(200, {
'Content-Type': 'audio/mpeg',
'Content-Length': stat.size
});
var readStream = fileSystem.createReadStream(filePath);
// We replaced all the event handlers with a simple call to readStream.pipe()
readStream.pipe(response);
})
.listen(2000);
Diambil dari http://elegantcode.com/2011/04/06/taking-baby-steps-with-node-js-pumping-data-between-streams/
Anda perlu menggunakan Stream untuk mengirim file (arsip) sebagai tanggapan, terlebih lagi Anda harus menggunakan Jenis konten yang sesuai di header tanggapan Anda.
Ada contoh fungsi yang melakukannya:
"application / octet-stream" didefinisikan sebagai "data biner sewenang-wenang" di RFC 2046, tujuan jenis konten ini adalah untuk disimpan ke disk - itulah yang Anda butuhkan.
"filename = [name of file]" menentukan nama file yang akan diunduh.
Untuk informasi lebih lanjut, silakan lihat topik stackoverflow ini .
sumber