如何在使用meteorml3解析器和meteor js时指定kml文件的位置

时间:2013-10-24 09:31:31

标签: meteor geoxml3

我一直在尝试使用geoxml3解析器解析kml文件。 geoxml3.js文件放在公用文件夹中。如果我将kml文件放在公共文件夹中,解析器工作正常。

geoXml.parse('doc.kml'); // this is working fine

但是,如果kml文件位于其他位置,例如在公共文件夹外的“uploads”文件夹中,我怎么能使它工作。我试过了,

geoXml.parse(uploadPath+'/doc.kml'); 

但这不起作用。我该如何指定文件路径?我无法将kml文件放在公共文件夹中,因为文件夹内的任何更改都会使页面刷新。

请帮帮我。

2 个答案:

答案 0 :(得分:1)

没有试过这个,但Assets.getText()可能就是你要找的。 documentation {{3}} 指定您传递相对于private目录的文件路径。

答案 1 :(得分:0)

好吧,无法解决路径问题。 Assets.getText()依赖于私有文件夹,也不会阻止服务器重新启动。但是找到了另一种解决方案,您可以将文件上传到项目应用程序中的任何文件夹并从中读取。

//在客户端

Meteor.call('getKmlString', kml_file_name, function(error, kml_string) {

        if (error) {
            console.log('ERROR in getting kml string');
            console.log(error);
        } else {
            console.log('GOT Kml String');
            geoXml.parseKmlString(kml_string);
        }

});

//在服务器端

Meteor.startup(function() {

    // code to run on server at startup
    return Meteor.methods({
        getKmlString: function(kml_file_name) {

            var content = '';

            var fs = Npm.require('fs');
            var encoding = encoding || 'binary';
            var chroot = Meteor.chroot || 'uploads';

            var path = chroot + (path ? '/' + path + '/' : '/');

            var content = fs.readFileSync('../../../../../' + path + kml_file_name, "utf-8", function read(err, data) {

                if (err) {
                    throw err;
                }

            });

            return content;

        },
    });

});