使用 NodeJS 复制文件

File copying using NodeJS

我正在尝试将文件从一个位置复制到另一个位置。下面是我的代码,我将此脚本称为 [1] http://localhost:8000/prdcopy/acbd.pdf

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 reader。虽然没有加载文件。这是我的第一个节点脚本,我想知道我做错了什么。在 IE 中它不打开任何 PDF Reader window.

这不一定是错误。
使用 res.end(),您将发回没有 Content-Type header 的 http 响应。 Firefox 在这种情况下所做的是检测键入的 URL 末尾的 .pdf 并假设响应将包含 PDF 查看器可显示的内容。情况并非如此,因为您没有发回任何东西(没有 body)。

尝试将 res.end() 替换为:

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

您会看到即使在 Firefox 中也不会显示任何 PDF 查看器。您还可以使用其他自动为您设置内容类型的 res 方法。例如,要发送 json 响应,将 res.end() 替换为:

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