0

代码可以发送一个图像文件来查看,但是当我想发送多个文件时,它会给出错误:

错误:发送后无法设置标头。

app.get('/api/upload', function (req, res) {

var arr = [];
var i =0;

gfs.files.find({}, {}).forEach(function (files) {

    if (files.length === 0) {
        return res.status(400).send({
            message: 'File not found'
        });
    }

        arr.push(files);

        res.writeHead(200, {'Content-Type': arr[i].contentType});

        var readstream = gfs.createReadStream({
            filename: arr[i].filename
        });

        arr.splice(i, 1 );

        readstream.on('data', function (data) {
            res.write(data);  
        });

        readstream.on('end', function () {
            res.end();   
        });

        readstream.on('error', function (err) {
            console.log('An error occurred!', err);
            throw err;
        });

});

});

所以; 如何使代码发送所有图像以查看?一件一件,还是一件一件?

附言。splice 的原因是,forEach 推送第一项,第一和第二,第一和第二和第三等:

Value:
[ { _id: 5927bd80b4f177148865960d,
filename: '9m79o7R.jpg',
contentType: 'image/jpeg',
length: 796432,
chunkSize: 261120,
uploadDate: 2017-05-26T05:30:44.947Z,
aliases: null,
metadata: { objectId: '9m79o7R.jpg' },
md5: 'e58694132f00a7b5d2f623cdd45d36f6' } ]

Value:
[ { _id: 5927bd80b4f177148865960d,
filename: '9m79o7R.jpg',
contentType: 'image/jpeg',
length: 796432,
chunkSize: 261120,
uploadDate: 2017-05-26T05:30:44.947Z,
aliases: null,
metadata: { objectId: '9m79o7R.jpg' },
md5: 'e58694132f00a7b5d2f623cdd45d36f6' },
{ _id: 5927bdadb4f1771488659614,
filename: 'blue_sky-t2.jpg',
contentType: 'image/jpeg',
length: 43594,
chunkSize: 261120,
uploadDate: 2017-05-26T05:31:26.526Z,
aliases: null,
metadata: { objectId: 'blue_sky-t2.jpg' },
md5: 'feda400c51b0c37f7c3d2ba439f1c776' } ]
4

0 回答 0