mercredi 10 juillet 2013

iMapIt Pro 2.1 – Comment le transfert d'un fichier exporté vers un site Web fonctionne élargi

Dans l'article précédent nous avons décrit la nouvelle fonctionnalité de l'application iMapIt Pro pour transférer des fichiers via le Web, introduite dans la version 2.0.
Dans la version 2.1 cette nouvelle fonctionnalité a été élargi pour envoyer une information supplémentaire sur le Web avec le fichier exporté: il a été inclus le paramètre Post "DeviceId".
Le Device ID est un code d'identification unique de votre iPhone ou iPad, qui peut être traité sur le serveur qui reçoit le fichier pour définir les autorisations, les accès, ou simplement pour identifier l'origine du fichier reçu.

Quels changements dans la réception du fichier sur le serveur?

Le script PHP intitulé "imapit_uploader.php" présentés dans l'article précédent, par exemple, pour recevoir le fichier exporté, peuvent désormais recevoir et traiter ce nouveau paramètre. Dans l'exemple ci-dessous le DeviceId ne s'affiche que sur l'écran de réponse. Voir la source du script PHP à jour ci-dessous.

------------------------------------------------------------- Début du fichier PHP (ne pas inclure cette ligne)

<?php

// iMapIt Uploader
// Exemple script php pour télécharger le fichier envoyé par l'application iMapIt

// Dossier dans lequel le fichier sera enregistré
$_UP['pasta'] = 'uploads/';

// Taille maximale du fichier (en octets)
$_UP['tamanho'] = 1024 * 1024 * 2// 2Mb

// Array avec les extensions autorisées
$_UP['extensoes'] = array('dxf''kml''gpx');

// Renommez le fichier? (Si cela est vrai, le fichier sera enregistré sous .jpg et un seul nom)
$_UP['renomeia'] = false;

// Array avec les types d'erreurs de téléchargement de PHP
$_UP['erros'][0] = 'Il n'y avait pas d'erreur';
$_UP['erros'][1] = 'Le fichier upload est supérieur la limite de PHP';
$_UP['erros'][2] = 'Le fichier dépasse la limite de taille spécifiée en HTML';
$_UP['erros'][3] = 'Le téléchargement des données a été fait partiellement';
$_UP['erros'][4] = 'Aucun fichier téléchargé';

// Titre du message de réponse
echo "<br><br><br>--- iMapIt Uploader ---<br><br>";

// Affiche l'ID du périphérique reçue dans POST variable DeviceID
echo "Device ID:" . $_POST['DeviceId'. "<br><br>";
    
// Affiche le nom du fichier
echo "Nom du Fichier: " . $_FILES['iMapIt_File']['name'. "<br><br>";

// Vérifie si il y avait une erreur à l'upload. Si oui, affiche l'erreur
if ($_FILES['iMapIt_File']['error'] != 0) {
die("Impossible de télécharger, d'erreur:<br />" . $_UP['erros'][$_FILES['iMapIt_File']['error']]);
exit// Arrête l'exécution du script
}

// Si le script arrive à ce point, il n'y avait pas d'erreur à l'upload et le PHP peut continuer

// Il vérifie l'extension du fichier
$extensao = strtolower(end(explode('.', $_FILES['iMapIt_File']['name'])));
if (array_search($extensao, $_UP['extensoes']) === false) {
    echo "S'il vous plaît, sont autorisés uniquement les fichiers avec les extensions: dxf, KML ou GPX";
}

// Vérifie la taille du fichier
else if ($_UP['tamanho'] < $_FILES['iMapIt_File']['size']) {
echo "Le fichier téléchargé est trop grand, envoyer des fichiers jusqu'à 2MO.";
}

// Le fichier a réussi tous les contrôles, il est temps d'essayer de le déplacer vers un dossier
else {
// Vérifie que le nom du fichier doit être changé
if ($_UP['renomeia'] == true) {
    // Crée un nom basé sur TIMESTAMP UNIX avec l'extension .jpg
    $nome_final = time().'.jpg';
else {
    // Conserve le nom d'origine du fichier
    $nome_final = $_FILES['iMapIt_File']['name'];
}

// Ensuite, vérifiez si vous pouvez déplacer le fichier vers le dossier choisi
if (move_uploaded_file($_FILES['iMapIt_File']['tmp_name'], $_UP['pasta'. $nome_final)) {
    // Téléchargez effectuée avec succès, affiche
    echo "Téléchargez effectuée avec succès!";
    } else {
        // Impossible de télécharger, le dossier est probablement incorrect
        echo "Impossible d'envoyer le fichier, essayez à nouveau";
    }
}
?>
---------------------------------------------------------------- Fin de fichier PHP (ne pas inclure cette ligne)

De même, le script HTML intitulé «teste_upload.html» présenté dans l'article précédent pour tester le script d'upload a été modifié pour envoyer ce nouveau paramètre. Voir le code source HTML du script mis à jour ci-dessous.


---------------------------------------------------------------- Début du fichier HTML (ne pas inclure cette ligne)

<!DOCTYPE HTML>
<HTML>
    <HEAD>
            <TITLE>iMapIt Loader Test</TITLE>
            <META http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    </HEAD>
    <BODY>
            <FORM id="frm" name="iMapIt_Form" action="imapit_uploader.php" method="POST" enctype="multipart/form-data">
                Sélectionnez un fichier à transférer<br>
                <INPUT id="iMapIt_File" name="iMapIt_File" type="file" style="width:100%;"/><br>
                Device ID: <INPUT id="DeviceId" name="DeviceId" type="text" style="width:40%;" /> <br>
                <INPUT id="submit" type="submit" value="Submit" />
                </FORM>
    </BODY>
</HTML>

---------------------------------------------------------------- Fin de fichier HTML (ne pas inclure cette ligne)