2015-07-03 33 views
0

我想將文件從一個位置複製到另一個位置。這是我下面的代碼,我調用這個腳本如[1] http://localhost:8000/prdcopy/acbd.pdf使用NodeJS的文件複製

var http = require('http'); 
var fs = require('fs'); 
var express=require('express'); 
var app=express(); 
var path_upload = "/234.567.890.123/"; 
var path_prodn = "//123.345.678.999/sample/temp/"; 
    app.get('/prdcopy/:file',function(req,res){ 
    var rstream = fs.createReadStream(path_upload + req.params.file); 
    var wstream = fs.createWriteStream(path_prodn + req.params.file); 
    rstream.pipe(wstream); 
    res.end(); 
    rstream.on('end', function() { 
     console.log('SrcFile'); 
    }); 
    wstream.on('close', function() { 
     console.log('Done!'); 
    }); 
}); 
var server=app.listen(8000,function(){ 
    console.log("listening on port 8000..."); 
}); 

它複製文件複製Firefox瀏覽器後正常不過打開了一個PDF閱讀器。雖然沒有加載文件。這是我的第一個節點腳本,我想知道我做錯了什麼。在IE中,它不打開任何PDF閱讀器窗口。

+0

如果IE不打開它,我會檢查複製的文件的MIME類型。 – enguerranws

回答

1

這不一定是錯誤。
使用res.end()您將發回沒有Content-Type標頭的http響應。在這種情況下,Firefox會在輸入的URL末尾檢測.pdf,並假定響應將包含PDF查看器可顯示的內容。事實並非如此,因爲你沒有送回任何東西(沒有身體)。

嘗試用類似代res.end()

res.header("Content-Type", "text/html"); 
res.end(); 

你會看到,沒有PDF viewever甚至在Firefox中顯示。您還可以使用其他res方法爲您自動設置內容類型。例如,發送一個json響應代替res.end()

status = {}; 
status.message = "Copied successfully"; 
res.json(status);