I'm working on a project using geoserver and openlayers plus web development technologies like html, javascript,jQuery, Ajax, bootsrap .. Users of my project should import a shapefile from their device on my web site and it shoud be displayed on the map. So i triyed to work geoserver-client-php to import the zipped shapfile to geoserver and then displaying it using openlayers but even when there's no error in the console the shapefile doesn't get uploaded to geoserver .
i am using Ajax to send the request.
Here it is my JavaScript code:
$("#btnSubmit").on('click', function () {
var form = new FormData(this);
$.ajax({
url: "main.php",
type: "POST",
data: form,
contentType: false,
cache: false,
processData: false
});
});
Here it is my HTML code:
<form id="importForm" enctype="multipart/form-data">
<div class="modal-body">
<div class="mb-3">
<label for="formFileMultiple" class="form-label">Choose your file:</label>
<input class="form-control" type="file" name="file" id="importInput" multiple>
</div>
</div>
<div class="modal-footer">
<button id="btnSubmit" type="submit" name="submit" class="btn btn-danger" value="Upload">Import</button>
</div>
</form>
Here it is my PHP code:
<?php
require_once("../vendor/autoload.php");
use OneOffTech\GeoServer\GeoServer;
use OneOffTech\GeoServer\Auth\Authentication;
use OneOffTech\GeoServer\GeoFile;
if(isset($_POST['submit'])){
$fileU = $_FILES['file'];
$realName = explode('.', $fileU['name']);
$filePath = realpath($fileU["tmp_name"]);
$url = 'http://localhost:8081/geoserver/';
$workspace = 'assia';
$authentication = new Authentication('admin', 'geoserver');
$geoserver = GeoServer::build($url, $workspace, $authentication);
$workspace = $geoserver->workspace();
$file = GeoFile::load($filePath);
$file -> name($realName[0]);
$feature = $geoserver->upload($file);
}