2017-08-03 10 views
1

このスニペットを見て、ロード時にgenerateFeatureCollection()にサーバ../maps/GIS.ZIPのファイルGIS.ZIPをサーバ(../maps/GIS.ZIP)に渡す方法を教えてください。 uploadFormファイル入力を使用せずに関数にZipファイルを渡す方法

私は現在、generateFeatureCollection()zipファイルをアップロードし、合格するために道場on機能

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

を呼び出していますが、私は負荷

 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:noneまたはvisibility:hidden入力)、Zipファイルを選択するウィンドウが開きます。そうでない場合は、ChromeやFirefoxなどの他のブラウザでは使用できません。

関連する問題