2017-08-03 15 views
1

您可以看一下這段代碼,並讓我知道如何將GIS.ZIP文件位於服務器上(../maps/GIS.ZIP)加載到generateFeatureCollection()並且不使用uploadForm如何在不使用文件輸入的情況下將Zip文件傳遞到函數中

正如你可以看到我現在打電話道場on功能

on(dom.byId("uploadForm"), "change", function (event) {}); 

上傳和一個zip文件傳遞給generateFeatureCollection()但我想這樣做負載

 on(dom.byId("uploadForm"), "change", function (event) { 
     var fileName = event.target.value.toLowerCase(); 

     if (sniff("ie")) { //filename is full path in IE so extract the file name 
      var arr = fileName.split("\\"); 
      fileName = arr[arr.length - 1]; 
     } 
     if (fileName.indexOf(".zip") !== -1) {//is file a zip - if not notify user 
      generateFeatureCollection(fileName); 
     } 
     else { 
      dom.byId('upload-status').innerHTML = '<p style="color:red">Add shapefile as .zip file</p>'; 
     } 
     }); 


    function generateFeatureCollection (fileName) { 
     var name = fileName.split("."); 
     //Chrome and IE add c:\fakepath to the value - we need to remove it 
     //See this link for more info: http://davidwalsh.name/fakepath 
     name = name[0].replace("c:\\fakepath\\", ""); 

     dom.byId('upload-status').innerHTML = '<b>Loading… </b>' + name; 

     //Define the input params for generate see the rest doc for details 
     //http://www.arcgis.com/apidocs/rest/index.html?generate.html 
     var params = { 
      'name': name, 
      'targetSR': map.spatialReference, 
      'maxRecordCount': 1000, 
      'enforceInputFileSizeLimit': true, 
      'enforceOutputJsonSizeLimit': true 
     }; 

     //generalize features for display Here we generalize at 1:40,000 which is approx 10 meters 
     //This should work well when using web mercator. 
     var extent = scaleUtils.getExtentForScale(map, 40000); 
     var resolution = extent.getWidth()/map.width; 
     params.generalize = true; 
     params.maxAllowableOffset = resolution; 
     params.reducePrecision = true; 
     params.numberOfDigitsAfterDecimal = 0; 

     var myContent = { 
      'filetype': 'shapefile', 
      'publishParameters': JSON.stringify(params), 
      'f': 'json', 
      'callback.html': 'textarea' 
     }; 

     //use the rest generate operation to generate a feature collection from the zipped shapefile 
     request({ 
      url: portalUrl + '/sharing/rest/content/features/generate', 
      content: myContent, 
      form: dom.byId('uploadForm'), 
      handleAs: 'json', 
      load: lang.hitch(this, function (response) { 
      if (response.error) { 
       errorHandler(response.error); 
       return; 
      } 
      var layerName = response.featureCollection.layers[0].layerDefinition.name; 
      dom.byId('upload-status').innerHTML = '<b>Loaded: </b>' + layerName; 
      addShapefileToMap(response.featureCollection); 
      }), 
      error: lang.hitch(this, errorHandler) 
     }); 
     } 

回答

0

由於到瀏覽器的安全性,你不能自動選擇文件,因此在IE的情況下,只有你可以創建一個加載(dojo/ready)的函數,這將模擬點擊一個隱藏的輸入文件(display:nonevisibility:hidden輸入),這將打開一個窗口來選擇您的Zip文件,否則在Chrome或Firefox等其他瀏覽器中不可能。

相關問題