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