如何在浏览器中解压缩gzip压缩文件?

时间:2018-01-15 19:36:21

标签: javascript leaflet gzip

所以我无法将PBF文件从服务器发送到客户端gzip。除了那些文件之外,其他所有内容都被gzip压缩,我无法理解为什么。所以我决定手动gzip文件,我想在浏览器中解压缩它们。

这是我将收到gzip压缩文件的地方:

var soil = L.mbTiles("data/myLayer/{z}/{x}/{y}.pbf.gz", {
    name: "myLayer",
    storage: "myLayer",
    mbtileLayerName: "myLayer",
    maxNativeZoom: 10,
    minNativeZoom: 10,
    minZoom: 6,
    bounds: L.latLngBounds([36.9,-116.2],[35.0,-113.9])
})

现在我将修改mbTiles,我想在它对数据执行任何操作之前将其解压缩。我该怎么做?

修改 这是我的server.js:

var loopback = require('loopback');
var boot = require('loopback-boot');
var compression = require('compression');
var bodyParser = require('body-parser');
var app = module.exports = loopback();
var session = require('client-sessions');
var path = require('path');
var expressStaticGzip = require("express-static-gzip");
app.engine('pug', require('pug').__express);
app.set('views', path.join(__dirname, '../views'));
app.set('view engine', 'pug');

app.use(bodyParser.json());
app.use(bodyParser.urlencoded({extended: true}));
app.use(compression({ threshold: 0 }));
app.use(loopback.static(__dirname+'../'));
//app.use("/test/data", expressStaticGzip("../views/test/data"));

app.start = function() {
  // start the web server
  return app.listen(function() {
    app.emit('started');
    var baseUrl = app.get('url').replace(/\/$/, '');
    console.log('Web server listening at: %s', baseUrl);
    if (app.get('loopback-component-explorer')) {
      var explorerPath = app.get('loopback-component-explorer').mountPath;
      console.log('Browse your REST API at %s%s', baseUrl, explorerPath);
    }
  });
};

boot(app, __dirname, function(err) {
  if (err) throw err;

  // start the server if `$ node server.js`
  if (require.main === module)
    app.start();
});

1 个答案:

答案 0 :(得分:0)

您需要告诉压缩模块这些文件是可压缩的。您可以在压缩选项对象中定义过滤器方法。

  

过滤器

     

决定是否应考虑响应的功能   压缩。此函数称为filter(req,res),并且是   期望返回true以考虑压缩响应,或   错误,不压缩响应。

     

默认过滤器功能使用可压缩模块来确定   如果res.getHeader('Content-Type')是可压缩的。