iMapIt Pro 2.1 Funcionalidade de Transferencia do Arquivo Exportado para um Site Web Expandida
Autor: iMapIt | Publicado: 2013-07-10T18:02:00-07:00

No artigo anterior descrevemos a nova funcionalidade da aplicação&nbsp;iMapIt Pro para transferir arquivos via Web, introduzida na versão 2.0.
Na versão 2.1, esta funcionalidade da aplicação foi expandida para enviar uma informação a mais através da Web, juntamente com o arquivo exportado: foi incluído o parâmetro Post "DeviceId".
O Device ID, ou identificação do dispositivo, é um código de identificação única do seu iPhone ou iPad, que pode ser tratada no servidor que receber o arquivo para se definir autorizações, acessos, ou simplesmente identificar a origem do arquivo recebido.

O que muda na recepção do arquivo no servidor?

O script PHP intitulado "imapit_uploader.php", apresentado no artigo anterior como exemplo para recepção do arquivo exportado, agora pode receber e tratar esse novo parâmetro. No exemplo abaixo o DeviceId é apenas apresentado na tela de resposta do recebimento do arquivo. Veja o fonte do script PHP atualizado abaixo.

------------------------------------------------------------- Início do arquivo PHP (não inclua essa linha)

&lt;?php



// iMapIt Uploader

// Exemplo de script php para upload do arquivo enviado pela aplicação iMapIt

// Script original:&nbsp;http://blog.thiagobelem.net/upload-de-arquivos-com-php/



// Pasta onde o arquivo vai ser salvo

$_UP['pasta'] =&nbsp;'uploads/';



// Tamanho máximo do arquivo (em Bytes)

$_UP['tamanho'] =&nbsp;1024&nbsp;*&nbsp;1024&nbsp;*&nbsp;2;&nbsp;// 2Mb



// Array com as extensões permitidas

$_UP['extensoes'] =&nbsp;array('dxf',&nbsp;'kml',&nbsp;'gpx');



// Renomeia o arquivo? (Se true, o arquivo será salvo como .jpg e um nome único)

$_UP['renomeia'] = false;



// Array com os tipos de erros de upload do PHP

$_UP['erros'][0] =&nbsp;'Não houve erro';

$_UP['erros'][1] =&nbsp;'O arquivo no upload é maior do que o limite do PHP';

$_UP['erros'][2] =&nbsp;'O arquivo ultrapassa o limite de tamanho especifiado no HTML';

$_UP['erros'][3] =&nbsp;'O upload do arquivo foi feito parcialmente';

$_UP['erros'][4] =&nbsp;'Não foi feito o upload do arquivo';




// Desloca a mensagem final algumas linhas para baixo
echo "&lt;br&gt;&lt;br&gt;&lt;br&gt;--- iMapIt Uploader ---&lt;br&gt;&lt;br&gt;";




// Apresenta device ID recebido na variavel POST DeviceID
echo "Device ID:" . $_POST['DeviceId'] . "&lt;br&gt;&lt;br&gt;";


&nbsp;&nbsp; &nbsp;

// Apresenta o nome do arquivo
echo "Arquivo: " . $_FILES['iMapIt_File']['name'] . "&lt;br&gt;&lt;br&gt;";



// Verifica se houve algum erro com o upload. Se sim, exibe a mensagem do erro

if&nbsp;($_FILES['iMapIt_File']['error'] !=&nbsp;0) {

die("Não foi possível fazer o upload, erro:&lt;br /&gt;"&nbsp;.&nbsp;$_UP['erros'][$_FILES['iMapIt_File']['error']]);

exit;&nbsp;// Para a execução do script

}



// Caso script chegue a esse ponto, não houve erro com o upload e o PHP pode continuar



// Faz a verificação da extensão do arquivo

$extensao = strtolower(end(explode('.', $_FILES['iMapIt_File']['name'])));

if&nbsp;(array_search($extensao, $_UP['extensoes']) === false) {

&nbsp; &nbsp;&nbsp;echo&nbsp;"Por favor, são permitidos apenas arquivos com as extensões: dxf, kml ou gpx";

}



// Faz a verificação do tamanho do arquivo

else&nbsp;if&nbsp;($_UP['tamanho'] &lt; $_FILES['iMapIt_File']['size']) {

echo&nbsp;"O arquivo enviado é muito grande, envie arquivos de até 2Mb.";

}



// O arquivo passou em todas as verificações, hora de tentar movê-lo para a pasta

else&nbsp;{

// Primeiro verifica se deve trocar o nome do arquivo

if&nbsp;($_UP['renomeia'] == true) {

&nbsp; &nbsp;&nbsp;// Cria um nome baseado no UNIX TIMESTAMP atual e com extensão .jpg

&nbsp; &nbsp; $nome_final = time().'.jpg';

}&nbsp;else&nbsp;{

&nbsp; &nbsp;&nbsp;// Mantém o nome original do arquivo

&nbsp; &nbsp; $nome_final = $_FILES['iMapIt_File']['name'];

}



// Depois verifica se é possível mover o arquivo para a pasta escolhida

if&nbsp;(move_uploaded_file($_FILES['iMapIt_File']['tmp_name'], $_UP['pasta']&nbsp;.$nome_final)) {

&nbsp; &nbsp;&nbsp;// Upload efetuado com sucesso, exibe uma mensagem

&nbsp; &nbsp;&nbsp;echo&nbsp;"Upload realizado com sucesso!";

&nbsp; &nbsp; }&nbsp;else&nbsp;{

&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;// Não foi possível fazer o upload, provavelmente a pasta está incorreta

&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;echo&nbsp;"Não foi possível enviar o arquivo, tente novamente";

&nbsp; &nbsp; }

}

?&gt;

---------------------------------------------------------------- Fim do arquivo PHP (não inclua essa linha)



Da mesma forma, o script HTML intitulado "teste_upload.html", apresentado no artigo anterior para testar o script de upload, foi modificado para enviar esse novo parâmetro. Veja o fonte do script HTML&nbsp;atualizado abaixo.



---------------------------------------------------------------- Fim do arquivo HTML (não inclua essa linha)



&lt;!DOCTYPE HTML&gt;

&lt;HTML&gt;

&nbsp; &nbsp; &lt;HEAD&gt;

&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;TITLE&gt;iMapIt Loader Test&lt;/TITLE&gt;

&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;META http-equiv="Content-Type" content="text/html; charset=UTF-8" /&gt;

&nbsp; &nbsp; &lt;/HEAD&gt;

&nbsp; &nbsp; &lt;BODY&gt;

&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;FORM id="frm" name="iMapIt_Form" action="imapit_uploader.php" method="POST" enctype="multipart/form-data"&gt;

&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;Selecione um arquivo para transferir&lt;br&gt;

&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;INPUT id="iMapIt_File" name="iMapIt_File" type="file" style="width:100%;"/&gt;&lt;br&gt;

&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Identificação do Dispositivo: &lt;INPUT id="DeviceId" name="DeviceId" type="text" style="width:40%;" /&gt; &lt;br&gt;

&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;INPUT id="submit" type="submit" value="Submit" /&gt;

&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;/FORM&gt;

&nbsp; &nbsp; &lt;/BODY&gt;

&lt;/HTML&gt;

---------------------------------------------------------------- Fim do arquivo HTML (não inclua essa linha)