我正在尝试将文件从一个位置复制到另一个位置。以下是我的代码,我将此脚本称为[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阅读器窗口。
答案 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);