将大文件(1.5gb)发送给连接速度<2mbps的客户端会导致浏览器只接收到1.08gb的数据,但认为下载已完成。更快的连接可以接收完整的1.5gb文件。
我的Express.js应用程序找出要发送的文件,并使用response#download方法进行响应:
注意,我设置了X-Accel-Redirect头部来利用NginxXsendfile。
我的Nginx配置:
app.get('/download-the-big-file', function(request, response) {
var file = {
name: 'awesome.file',
path: '/files/123-awesome.file'
};
response.header("X-Accel-Redirect: " + file.path);
response.download(file.path, file.name);
});
注意,我设置了X-Accel-Redirect头部来利用NginxXsendfile。
我的Nginx配置:
server {
client_max_body_size 2g;
server_name localhost;
location / {
proxy_pass http://127.0.0.1:8000/;
}
location /files {
root /media/storage;
internal;
}
}