我正在尝试创建个人资料图片上传功能,但卡在了检索部分。图像被分块下载,并且由于某种原因而被渲染后,“网络”选项卡中的图像旁边仍会旋转图标60秒,这就像图像已下载并渲染一样,但仍需要大约一分钟或更长的时间使其完成加载到浏览器的“网络”标签中,并且如果我尝试同时上传另一张图片,则该图片要等到之前上传的图片经过那一分钟左右后才能呈现,有人可以帮我解决这个问题请。
const storage = require('@google-cloud/storage');
const gcs = storage({
projectId: 'my_project_id',
keyFilename: 'keys.json'
});
const bucketName = 'my-profile-photos';
const bucket = gcs.bucket(bucketName);
const retrieveFromGcs = (req, res, next) => {
const stream = bucket.file(req.params.name).createReadStream();
res.writeHead(200, {'Content-Type': 'image/jpg' });
stream.on('data', (data) => {
console.log('hit stream on data');
res.write(data);
});
stream.on('error', (err) => {
console.log('hit error');
next(err);
});
stream.on('finish', () => {
console.log('hit finish');
stream.end();
});
//如果console.logs对任何人都有用,则“命中数据流”将被打印大约200次,而“命中完成”将被打印一次
最佳答案
在这里,当您完成流式传输时,您必须结束资源。
为此使用下面的代码
stream.on('finish', () => {
console.log('hit finish');
stream.end();
res.end();
});
完成网络加载程序。我们必须结束我们的响应对象。这样浏览器就知道现在没有数据可写。