使用ExtJS 6' filefield'获取完整路径(没有伪路径)在OpenLayers 3上传shapefile

时间:2016-02-15 21:57:55

标签: javascript extjs openlayers shapefile extjs6

我正在构建一个使用this javascript plugin上传ZIP文件并将其中的shapefile转换为GeoJSON的应用程序,以便将其添加到地图中。

我的应用程序使用ExtJS 6.0,我似乎无法找到如何使用" filefield"按钮将压缩文件的路径提供给插件。问题是文件字段只提供了一个伪路径(我认为它可以用于某种用户保护)。因此,我不能使用我的表单给出的路径作为插件的输入(我得到404错误,因为它使用C:\ fakepath \ file.zip作为输入)。如果我手动提供路径,一切正常......

这是我的功能代码:

var getShp = function getShp(){
    Ext.create('Ext.window.Window', {
        title: 'Upload new ESRI shapefile',
        width: 400,
        items: { 
            xtype: 'form',
            id: 'urlFormId',
            items: [{
                xtype: 'filefield',
                name: 'shp',
                fieldLabel: 'Shapefile (*.shp)',
                msgTarget: 'side',
                allowBlank: false,
                anchor: '100%',
                buttonText: 'Select shapefile...'
            }],
            buttons: [{
                text: 'Add layer',
                handler: function() {
                    var form = Ext.getCmp('urlFormId').getForm();
                    var shpUrl = form.findField('shp').getValue();

                    var vectorSource = new ol.source.Vector();

                    loadshp({
                        url: shpUrl,
                        encoding: 'UTF-9',
                        EPSG: '4326'
                    }, function(data) {

                        shpUp = new ol.layer.Vector({
                            name: 'Test world',
                            source: new ol.source.Vector({
                                features: (new ol.format.GeoJSON()).readFeatures(data)
                            })
                        })

                            olMap.addLayer(shpUp);
                    });
                }
            }]
        }
    }).show();
}

0 个答案:

没有答案