mardi 2 avril 2013

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

L'une des principales fonctionnalités de la version 2.0 iMapIt Pro est de permettre au fichier à exporter, disponible dès maintenant sur ​​les formats DXF, fichiers KML ou GPX. En plus de pouvoir être extrait par câble, par le port USB et envoyé par e-mail, il peut également être envoyé par Internet à un serveur Internet.
L'objectif principal de cet article est d'expliquer comment la fonctionnalité de l'envoi du fichier par Internet peut être utilisé.
Lorsque vous appuyez sur l'option "Web" sous "Envoyer à:" un champ sera affiché juste en dessous et qui vous permettra de taper l'adresse Internet du site le fichier doit être envoyé.


Lorsque vous appuyez sur le bouton Exporter le fichier sera envoyé à l'adresse informé et un écran s'affiche avec la réponse du serveur.


Notez que pour l'appliquer correctement, le serveur indiqué sur l'adresse internet, doit être prêt à recevoir le fichier. Ensuite, vous devez avoir accès à ce serveur, de sorte que vous pouvez le configurer et recevoir le fichier et l'enregistrer où vous trouvez qu'il est approprié sur le serveur.

Comment puis-je configurer le serveur pour recevoir le fichier?


J'ai développé deux exemples de scripts pour les serveurs internet qui peuvent être utilisés pour recevoir le fichier envoyé par iMapIt Pro.
Le premier exemple est un script PHP. PHP est l'un des langages de programmation pour les serveurs Internet. Ce type de fichier fonctionne sur des serveurs Apache.
Voir l'exemple ci-dessous, le fichier doit être enregistré sous le nom "imapit_uploader.php".



------------------------------------------------------------- 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>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)


Vous aurez seulement besoin d'un type de script sur le serveur web, permettez-moi de vous montrer un autre exemple, maintenant en JSP. JSP est un autre type de langage de programmation pour les serveurs Web et fonctionne sur Apache Tomcat serveurs.
Voir l'exemple ci-dessous, le fichier doit être enregistré sous le nom "imapit_uploader.jsp."


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

<%@ page language="java" contentType="text/html;charset=utf-8"%>
<%request.setCharacterEncoding("UTF-8");response.setCharacterEncoding("UTF-8");%>
<%@ page import="java.io.*,java.util.*, javax.servlet.*" %>
<%@ page import="javax.servlet.http.*" %>
<%@ page import="org.apache.commons.fileupload.*" %>
<%@ page import="org.apache.commons.fileupload.disk.*" %>
<%@ page import="org.apache.commons.fileupload.servlet.*" %>
<%@ page import="org.apache.commons.io.output.*" %>
<%
File file;
int MAX_FILE_SIZE = 5 * 1024 * 1024;
int MAX_MEM_SIZE = 1 *1024 * 1024;
ServletContext context = pageContext.getServletContext();
String tempFolder = context.getInitParameter("temp-folder");
String IMEI="", method="", msg="";
boolean isMultipart;
method = request.getMethod();
isMultipart = ServletFileUpload.isMultipartContent(request);

if (isMultipart && method.equalsIgnoreCase("POST")) {
DiskFileItemFactory factory = new DiskFileItemFactory();
// que la taille maximale sera stocké dans la mémoire
factory.setSizeThreshold(MAX_MEM_SIZE);
// Emplacement pour enregistrer des données qui est plus grand que maxMemSize.
factory.setRepository(new File(tempFolder));
ServletFileUpload upload = new ServletFileUpload(factory);
upload.setSizeMax(MAX_FILE_SIZE);
List items = null, fileItems = null;
FileItem item;
String fileName="";
try {
items = upload.parseRequest(request);
Iterator itr = items.iterator();
int idx;
while (itr.hasNext()) {
item = (FileItem) itr.next();
if (item.isFormField()) {
if (item.getFieldName().equalsIgnoreCase("IMEI")) 
IMEI = item.getString() + "";
} else {
if (fileItems==null) fileItems = new ArrayList<FileItem>();
fileItems.add(item);
}
}
//if (IMEI.equals("") || IMEI.equals("null")) {
// msg = "Invalid source";
//}
if (fileItems!=null && !fileItems.isEmpty()) {
msg = "Vous avez téléchargé le fichier suivant: ";
for (int i=0; i<fileItems.size(); i++) {
item = (FileItem) fileItems.get(i);
fileName = item.getName();
idx = fileName.lastIndexOf("\\");
if (idx == -1) idx = fileName.lastIndexOf("/");
if (idx >= 0) {
fileName = fileName.substring(idx);
}
fileName = fileName;
item.write(new File(tempFolder + fileName));
msg += "<br><a href=\"/upload/temp/" + fileName + "\">" + fileName + "</a>";
}
}
} catch (Exception e) {
msg = e.getMessage();
}
} else {
msg += "Téléchargez n'est pas acceptée.<br>";
msg += "S'il vous plaît télécharger le fichier en utilisant "multipart / form-data" et la méthode POST<br>";
}
%>
<!DOCTYPE HTML>
<HTML>
<HEAD>
<TITLE>KML Loader</TITLE>
<META http-equiv="Content-Type" content="text/html; charset=UTF-8" />
</HEAD>
<BODY>
<%=msg%>
</BODY>
</HTML>

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


Si quelqu'un a des exemples de scripts plus à partager, ils seront plus que bienvenus.

Eh bien, dans le but de tester si votre script d'upload fonctionne correctement, vous pouvez utiliser le code HTML suivant. Ce code peut être enregistré sous le nom "teste_upload.html".


---------------------------------------------------------------- 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>
                <INPUT id="submit" type="submit" value="Submit" />
                </FORM>
    </BODY>
</HTML>

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


L'exemple ci-dessus est un fichier HTML comment le iMapIt Pro, à partir de votre iPhone ou iPad, va transférer le fichier exporté. Si le fichier de test ci-dessus fonctionne appelant les scripts PHP "imapit_uploader.php" et transférer le fichier enquiry.c; aussi le Pro iMapIt va fonctionner.

N'hésitez pas à envoyer vos questions et suggestions.