首页 > 解决方案 > nodejs - 来自地理服务器的快速请求形状 zip 返回文本

问题描述

我正在从 express (node.js) 请求一个地理服务器来获取 wfs 服务中的 shape zip,但我只收到了文本。

var express = require('express');
var router = express.Router();
var fs = require('fs');
var request = require("request");
var DOWNLOAD_DIR = './downloads/';
router.get('/', function(req, res, next) {
var file_url='https://geo.gob.bo/geoserver/aasana/wfs?SERVICE=WFS&VERSION=1.1.0&REQUEST=GetFeature&typeName=aerodromos&outputFormat=shape-zip';
 request(file_url, function(err, resp, body) {
console.log('res',res);
     console.log('body',body);
if(!err){
         var file = fs.createWriteStream(DOWNLOAD_DIR + 'aerodromos');
         var buff = new Buffer(body);
          file.write(buff,function(err){
              console.log(err);
          });
           file.end();
            console.log(' downloaded to ' + DOWNLOAD_DIR);
     }else{
         console.log("No results error.",err);
     }
 });
  res.render('index', { title: 'descargado' });
});

module.exports = router;

我正在尝试放入文件 zip,但我无法打开它。

标签: node.jsexpressshapefilegeoserver

解决方案


您需要将编码设置为 null ,在您的情况下,这将被视为缓冲区而不是字符串

request({url: file_url, encoding: null}, function(err, resp, body) {

推荐阅读