2015-07-03 3 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 Reader.

+0

Если IE не открывает его, я хотел бы проверить скопированный тип файла MIME. – enguerranws

ответ

1

Это не обязательно ошибка.
С res.end() вы отправляете ответ http без заголовка Content-Type. Что Firefox делает в этом случае, обнаруживает .pdf в конце типизированного URL-адреса и полагая, что ответ будет содержать то, что может отображаться программой просмотра 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); 
Смежные вопросы