Javascript 使用extjs6';文件字段';获取完整路径(无伪造路径)以在OpenLayers 3上上载shapefile

Javascript 使用extjs6';文件字段';获取完整路径(无伪造路径)以在OpenLayers 3上上载shapefile,javascript,extjs,openlayers,shapefile,extjs6,Javascript,Extjs,Openlayers,Shapefile,Extjs6,我正在构建一个应用程序,用于上传一个ZIP文件,并将其中的shapefile转换为GeoJSON,以便将其添加到地图中 我的应用程序使用ExtJS 6.0,我似乎找不到如何使用“filefield”按钮为插件提供压缩文件的路径。问题是filefield只提供了一个伪造路径(我认为这是为了某种用户保护)。因此,我不能使用表单给出的路径作为插件的输入(我得到一个404错误,因为它使用C:\fakepath\file.zip作为输入)。如果我手动给出路径,一切正常 以下是我的函数代码: var get

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

我的应用程序使用ExtJS 6.0,我似乎找不到如何使用“filefield”按钮为插件提供压缩文件的路径。问题是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();
}
您无法获取真实路径,请参阅,因此您的选项是要么将文件上载到服务器并将该url提供给插件,要么读取javascript文件并将其内容提供给插件,请参阅