2017-03-01 70 views
0

我使用的“表达”文件管直接从文件系统

const path = config.storageRoot + '/' + req.params.originalFileName; 
var mimetype = mime.lookup(req.params.originalFileName); 
res.writeHead(200, { 'Content-Type': mimetype}); 
fs.createReadStream(path).pipe(res); 

我获取XML数据的结果中:

<x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 5.5-c014 79.151739, 2013/04/03-12:12:15  "> 

,当我使用res.end从一个fs.readFile相反,二进制内容的格式正确的结果。

我在做什么错了?

回答

0

看看我是如何在这个答案的例子管道文件:

这件事情是这样的:

// 'type' is the MIME type 
var s = fs.createReadStream(file); 
s.on('open', function() { 
    res.set('Content-Type', type); 
    s.pipe(res); 
}); 
s.on('error', function() { 
    res.set('Content-Type', 'text/plain'); 
    res.status(404).end('Not found'); 
}); 

所以我只是将标题设置为由Express发布,而不是显式发布标题。另外我正在处理流事件。也许你应该试着同样这样做,因为我做到了,似乎工作的方式,根据特拉维斯:

除了处理流事件和错误的另一件事是,以确保你有正确的编码,权限等等。我不知道你期待什么结果,XML意味着什么或来自哪里,但处理流事件可能会告诉你更多关于正在发生的事情。

+0

如果你使用你的解决方案,我仍然会得到相同的结果。我怀疑xml数据是exif数据。 – programmingheadaches