使用NodeJS进行文件复制

时间:2015-07-03 09:27:32

标签: javascript jquery node.js file-copying

我正在尝试将文件从一个位置复制到另一个位置。以下是我的代码,我将此脚本称为[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阅读器。但是没有加载文件。这是我的第一个节点脚本,我想知道我做错了什么。在IE中,它没有打开任何PDF阅读器窗口。

1 个答案:

答案 0 :(得分:1)

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

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

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

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

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