Fóruns sobre PHP, JavaScript, HTML, MySQLi, jQuery, Banco de Dados, CSS


Moderador: web

 
Mais de 1000 postagens
Mais de 1000 postagens
Tópico Autor
Mensagens: 1273
Sexo: Masculino

Upload de foto pelo celular

30-12-2016 18:53

Olá! Passei a testar os cadastramentos de meu código pelo celular, tudo me parece estar indo bem; porém, ao cadastrar fotos, percebi que, quanto às fotos digitais, em especial as capturadas no ato do cadastro, não é levada em consideração, no momento do upload, a orientação, se retrato ou paisagem. As fotos são capturadas na orientação que se pretende, mas o problema me parece estar no momento do upload. Assim, se capturo, por exemplo, uma foto na orientação retrato, o upload é feito com ela deitada. Andei pesquisando, a solução parece ter a ver com a função exif_read_data, mas estou tendo dificuldade na implementação. É possível me ajudarem nela? Grato.
0
 
Mais de 1000 postagens
Mais de 1000 postagens
Tópico Autor
Mensagens: 1273
Sexo: Masculino

Re: Upload de foto pelo celular

30-12-2016 19:33

Complementando, encontrei um código neste link: https://www.experts-exchange.com/questi ... vices.html. Primeiro, há um código de upload, e, depois, o código referente à orientação. Como faço para mesclar os dois?
0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17663
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

Re: Upload de foto pelo celular

30-12-2016 20:21

Vou dar uma olhada no link
0
A melhor hospedagem para o seu site HostGator!
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17663
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

Re: Upload de foto pelo celular

30-12-2016 20:26

Tem um comentário no próprio link que o usuário postou um código que testei aqui e funciona. Inclusive adicionou a questão do rotacionar a foto.

O código é o seguinte:

<?php // demo/temp_augustkrys.php error_reporting(E_ALL); // MANUAL REFERENCE PAGES YOU MUST UNDERSTAND TO UPLOAD FILES // http://php.net/manual/en/features.file-upload.php // http://php.net/manual/en/features.file-upload.common-pitfalls.php // http://php.net/manual/en/function.move-uploaded-file.php // http://php.net/manual/en/reserved.variables.files.php // MANUAL PAGES THAT ARE IMPORTANT IF YOU ARE DEALING WITH LARGE FILES // http://php.net/manual/en/ini.core.php#ini.upload-max-filesize // http://php.net/manual/en/ini.core.php#ini.post-max-size // http://php.net/manual/en/info.configuration.php#ini.max-input-time // MANUAL PAGES FOR IMAGE MANIPULATION // http://php.net/manual/en/function.imagecreatefromstring.php // http://php.net/manual/en/function.exif-read-data.php // http://php.net/manual/en/function.imagejpeg.php // PHP 5.1+ SEE http://php.net/manual/en/function.date-default-timezone-set.php date_default_timezone_set('America/Chicago'); // ESTABLISH THE BIGGEST FILE SIZE WE CAN ACCEPT - ABOUT 8 MB $max_file_size = '8400000'; // ESTABLISH THE KINDS OF FILE EXTENSIONS WE CAN ACCEPT (USE UPPERCASE ONLY) $file_exts = array ( 'JPG' , 'PNG' , 'GIF' ) ; $f_exts = implode(', ', $file_exts); // ESTABLISH THE NAME OF THE DESTINATION FOLDER $my_dir = getcwd(); // OR USE THIS TO PUT UPLOADS IN A SEPARATE FOLDER $my_dir = 'throwaway'; if (!is_dir($my_dir)) { mkdir($my_dir); } // LIST OF THE ERRORS THAT MAY BE REPORTED IN $_FILES[]["error"] (THERE IS NO #5) $errors = array ( 0 => "Success!" , 1 => "The uploaded file exceeds the upload_max_filesize directive in php.ini" , 2 => "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" , 3 => "The uploaded file was only partially uploaded" , 4 => "No file was uploaded" , 5 => "UNDEFINED ERROR" , 6 => "Missing a temporary folder" , 7 => "Cannot write file to disk" ) ; // IF THERE IS INFORMATION POSTED if (!empty($_POST)) { // IF THERE ARE ERRORS $error_code = $_FILES["userfile"]["error"]; if ($error_code) { trigger_error($errors[$error_code], E_USER_ERROR); } // GET THE FILE SIZE $fsize = number_format($_FILES["userfile"]["size"]); // SYNTHESIZE THE NEW FILE NAME FOR TEMPORARY STORAGE $fname = basename($_FILES['userfile']['name']); // FAIL IF THIS IS NOT AN ALLOWABLE EXTENSION $f_ext = explode('.', $fname); $f_ext = end($f_ext); $f_ext = trim($f_ext); $f_ext = strtoupper($f_ext); if (!in_array($f_ext, $file_exts)) trigger_error("$f_ext NOT ALLOWED. CHOOSE FROM $f_exts", E_USER_ERROR); // THE SERVER PATH TO THE FILE $my_path = getcwd() . DIRECTORY_SEPARATOR . $my_dir . DIRECTORY_SEPARATOR . $fname ; // THE URL PATH TO THE FILE $my_url = $my_dir . DIRECTORY_SEPARATOR . $fname ; // MESSAGES ABOUT THE UPLOAD STATUS, IF ANY $msg = NULL; // IF THE FILE IS NEW (DOES NOT EXIST) if (!file_exists($my_path)) { // IF THE MOVE FUNCTION WORKED CORRECTLY if (move_uploaded_file($_FILES['userfile']['tmp_name'], $my_path)) { $upload_success = 1; } // IF THE MOVE FUNCTION FAILED IT PROBABLY THREW A MESSAGE else { $upload_success = -1; trigger_error("MOVE TO $my_path FAILED", E_USER_ERROR); } } // IF THE FILE ALREADY EXISTS else { $msg .= "<br/><b><i>$my_url</i></b> already exists" . PHP_EOL; // SHOULD WE OVERWRITE THE FILE? IF NOT if (empty($_POST["overwrite"])) { $upload_success = 0; } // IF WE SHOULD OVERWRITE THE FILE, TRY TO MAKE A BACKUP else { $now = date('Y-m-d-His'); $my_bak = $my_path . '.' . $now . '.bak'; if (!copy($my_path, $my_bak)) { $msg .= "<br/><strong>Attempted Backup Failed!</strong>" . PHP_EOL; } if (move_uploaded_file($_FILES['userfile']['tmp_name'], $my_path)) { $upload_success = 2; } else { $upload_success = -1; trigger_error("MOVE TO $my_path FAILED", E_USER_ERROR); } } } // RE-ORIENT JPG IMAGES $rot = FALSE; if ($f_ext == 'JPG') { $exf = exif_read_data($my_path); if(!empty($exf['Orientation'])) { $img = imagecreatefromstring(file_get_contents($my_path)); switch($exf['Orientation']) { case 8: $deg = 90; $img = imagerotate($img, $deg, 0); $rot = TRUE; break; case 3: $deg = 180; $img = imagerotate($img, $deg, 0); $rot = TRUE; break; case 6: $deg = -90; $img = imagerotate($img, $deg, 0); $rot = TRUE; break; default: break; } if ($rot) imagejpeg($img, $my_path); } } // PREPARE A REPORT OF THE SCRIPT'S SUCCESS OR FAILURE if ($upload_success == 2) { $msg .= "<br/>A backup was made and the file was overwritten" . PHP_EOL; } if ($upload_success == 1) { $msg .= "<br/><strong>$my_url</strong> has been saved" . PHP_EOL; } if ($upload_success == 0) { $msg .= "<br/><strong>It was NOT overwritten.</strong>" . PHP_EOL; } if ($upload_success < 0) { $msg .= "<br/><strong>ERROR: $my_url NOT SAVED - SEE WARNING FROM move_uploaded_file()</strong>" . PHP_EOL; } if ($rot) { $msg .= "<br/>The JPG image was rotated by $deg&deg;" . PHP_EOL; } // ADD FILE SIZE AND PERMISSION INFORMATION if ($upload_success > 0) { $msg .= "<br/>$fsize bytes uploaded" . PHP_EOL; if (!chmod ($my_path, 0755)) { $msg .= "<br/>chmod(0755) FAILED: fileperms() = "; $msg .= substr(sprintf('%o', fileperms($my_path)), -4); } } // SHOW THE SUCCESS OR FAILURE echo $msg; // SHOW A LINK TO THE FILE echo '<br/>' . '<a href="' . $my_url . '" target="_blank">' . "See: $my_url" . '</a>' ; } // CREATE THE FORM FOR INPUT (USING HEREDOC SYNTAX) $form = <<<ENDFORM <p>Upload one file <form enctype="multipart/form-data" method="post"> <!-- MAX_FILE_SIZE MUST PRECEDE THE FILE INPUT FIELD --> <input type="hidden" name="MAX_FILE_SIZE" value="$max_file_size" /> Find a file to Upload ($f_exts): <input name="userfile" type="file" /> <br/>Check this box <input autocomplete="off" type="checkbox" name="overwrite" /> to <strong>overwrite</strong> existing files </br><input type="submit" value="Upload" /> </form> </p> ENDFORM; echo $form; ?>

0
A melhor hospedagem para o seu site HostGator!
 
Mais de 1000 postagens
Mais de 1000 postagens
Tópico Autor
Mensagens: 1273
Sexo: Masculino

Re: Upload de foto pelo celular

30-12-2016 21:22

Eu pensei que houvesse somente os dois códigos, depois vi que continuava. Mas é muito grande. E me parece bem complicado. Antes, ele sugeriu umas tentativas. Não dá para diminuir isso e simplificar, mesclando os códigos iniciais? Meu código de upload está parecido com o código de upload do exemplo. Se houver como mesclar os códigos iniciais do exemplo, poderei compreender melhor como adapto ao meu.

O código abaixo, que o link refere, e que é citado como exemplo neste link http://br.php.net/manual/pt_BR/function ... d-data.php, é encontrado em vários resultados da pesquisa.

<?php $image = imagecreatefromstring(file_get_contents($_FILES['image_upload']['tmp_name'])); $exif = exif_read_data($_FILES['image_upload']['tmp_name']); if(!empty($exif['Orientation'])) { switch($exif['Orientation']) { case 8: $image = imagerotate($image,90,0); break; case 3: $image = imagerotate($image,180,0); break; case 6: $image = imagerotate($image,-90,0); break; } } // $image now contains a resource with the image oriented correctly ?>

0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17663
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

Re: Upload de foto pelo celular

30-12-2016 21:36

Nesse código completo primeiro é feito o upload, depois é capturado a imagem para "reupar" setando a orientação correta.

O script é grande porque está comentado e tem várias verificações e mensagens de acordo com cada erro retornado.

Dependendo do seu caso o que poderia fazer é eliminar os comentários e tirar verificações. Mas isso ai vai fazer com que seja enviado qualquer arquivo de qualquer tamanho sem restrição alguma.
0
A melhor hospedagem para o seu site HostGator!
 
Mais de 1000 postagens
Mais de 1000 postagens
Tópico Autor
Mensagens: 1273
Sexo: Masculino

Re: Upload de foto pelo celular

30-12-2016 21:53

Eu já tenho a validação das imagens. No caso, eu trabalho miniaturas. O esquema que você citou parece similar.

O moderador citou isto:

After move_uploaded_file() there is this line of code, that seems to tell the location of the permanently stored image file.

echo "Stored in: " . "upload/" . $_FILES["file"]["name"];

Por quê não deu certo? Onde estaria o erro?
0
 
Mais de 1000 postagens
Mais de 1000 postagens
Tópico Autor
Mensagens: 1273
Sexo: Masculino

Re: Upload de foto pelo celular

30-12-2016 21:54

E ainda estou usando PHP4. O exemplo que achei complicado usaria PHP5.
0
 
Mais de 1000 postagens
Mais de 1000 postagens
Tópico Autor
Mensagens: 1273
Sexo: Masculino

Re: Upload de foto pelo celular

30-12-2016 22:38

Encontrei isto: https://www.faber04.com/news/detect-ima ... hp-upload/. Mas vou testar amanhã. Minha cabeça deu tilt.
0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17663
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

Re: Upload de foto pelo celular

30-12-2016 23:15

Esse exemplo ai do link é bem simples.

Eu montei aqui uma base com um script de upload. Ai apliquei a parte da verificação do exif.

Como você vai notar ai no código eu destaquei o bloco do exif. Também travei o código ali no

// exibindo todos os dados da foto print_r($exf); exit; // exibindo todos os dados da foto

Ai você testando ai com uma foto que tem o exif e verifica se vai vir o valor de Orientation.

Dando tudo certo só retirar esse bloco acima e deixar o script correr a verificação do switch. Segue o código:

<form enctype="multipart/form-data" method="POST" action="teste.php"> <input type="file" name="foto" value=""> <br> <input type="submit" name="envio"> </form> <?php if(isset($_POST['envio'])) { // VERIFICANDO CAMPO VAZIO if($_FILES['foto']['name']=="") { echo "<script>alert('Você deve enviar uma foto');history.back();</script>"; exit; } $uploaddir = "fotos/"; // NOME DA FOTO $uploadfile = $uploaddir.$_FILES['foto']['name']; // ENVIANDO A FOTO if(@move_uploaded_file($_FILES['foto']['tmp_name'], $uploadfile)) { echo "foi enviado: ".$uploadfile."<br>"; ////////////////////////////////////////////////////////////// $fname = basename($_FILES['foto']['name']); $f_ext = explode('.', $fname); $rot = FALSE; if ($f_ext[1] == 'jpg') { $exf = exif_read_data($uploadfile); // exibindo todos os dados da foto print_r($exf); exit; // exibindo todos os dados da foto if(!empty($exf['Orientation'])) { $img = imagecreatefromstring(file_get_contents($uploadfile)); switch($exf['Orientation']) { case 8: $deg = 90; $img = imagerotate($img, $deg, 0); $rot = TRUE; break; case 3: $deg = 180; $img = imagerotate($img, $deg, 0); $rot = TRUE; break; case 6: $deg = -90; $img = imagerotate($img, $deg, 0); $rot = TRUE; break; default: break; } if ($rot) imagejpeg($img, $uploadfile); echo "correto"; } } ////////////////////////////////////////////////////////////// } } ?>

0
A melhor hospedagem para o seu site HostGator!
 
Mais de 1000 postagens
Mais de 1000 postagens
Tópico Autor
Mensagens: 1273
Sexo: Masculino

Re: Upload de foto pelo celular

31-12-2016 08:15

Obrigado. Ficou mais perto de minha compreensão. O código de upload que você colocou é o que uso. Vou testar.
0
 
Mais de 1000 postagens
Mais de 1000 postagens
Tópico Autor
Mensagens: 1273
Sexo: Masculino

Re: Upload de foto pelo celular

31-12-2016 14:23

Eu fiz uma adaptação do código de upload que utilizo, conforme abaixo:

//echo $nm1; echo "&nbsp;-&nbsp;"; echo "variável nm1"; echo "<br>"; //echo $dir; echo "&nbsp;-&nbsp;"; echo "variável dib"; echo "<br>"; $upf = "$dir/".$nm1; //echo $upf; echo "&nbsp;-&nbsp;"; echo "variável upf"; echo "<br>"; move_uploaded_file($_FILES['pft']['tmp_name'], $upf); echo "foi enviado: ".$upf."<br>"; ////////////////////////////////////////////////////////////// $fname = basename($nm1); //$fname = basename($_FILES['foto']['name']); $f_ext = explode('.', $fname); $rot = FALSE; if ($f_ext[1] == 'jpg') { $exf = exif_read_data($upf); //$exf = exif_read_data($uploadfile); // exibindo todos os dados da foto print_r($exf); exit; // exibindo todos os dados da foto if(!empty($exf['Orientation'])) { $img = imagecreatefromstring(file_get_contents($upf)); //$img = imagecreatefromstring(file_get_contents($uploadfile)); switch($exf['Orientation']) { case 8: $deg = 90; $img = imagerotate($img, $deg, 0); $rot = TRUE; break; case 3: $deg = 180; $img = imagerotate($img, $deg, 0); $rot = TRUE; break; case 6: $deg = -90; $img = imagerotate($img, $deg, 0); $rot = TRUE; break; default: break; } if ($rot) imagejpeg($img, $upf); //if ($rot) imagejpeg($img, $uploadfile); echo "correto"; } } //////////////////////////////////////////////////////////////

Está ocorrendo o seguinte: no Windows, no desktop, onde não há esse problema da orientação, são exibidos os dados da fotos, e o upload é feito normalmente nas duas orientações.

Pelo celular, no qual há instalado o Android, acontece o seguinte: não são exibidos os dados da foto.

Se inicio o upload, deveria exibir os dados da foto, e a página ficar em branco, como no Windows, creio. Mas se mantém exibida a página de input (chamo, nela, o código do upload com include).

Quando comento o bloco de exibição dos dados da foto, se tento fazer o upload na orientação paisagem, o upload é feito normalmente, mas o upload na orientação retrato não é feito, ficando-se no arquivo de upload. Mas me parece que houve um avanço, pois, antes, se eu tentava fazer o upload na orientação retrato, ele cadastrava a foto deitada.

O que pode estar ocorrendo?

Grato.
0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17663
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

Re: Upload de foto pelo celular

01-01-2017 15:13

Fiz aqui alguns testes com a função php exif_read_data e descobri que a mesma cria uma chave do array quando exibido localmente/PC chamada THUMBNAIL.
E a mesma função cria outra chave quando executada no celular/online chamada IFD0.

Também observei fazendo upload de fotos que o valor para foto retrato é sempre 6.

Para rotacionar uma foto retrato quando deitada tem que usar o valor -90.

Com base nisso montei esse script

<form enctype="multipart/form-data" method="POST" action="teste.php"> <input type="file" name="foto" value=""> <br> <input type="submit" name="envio"> </form> <?php if(isset($_POST['envio'])) { // verificando campo vazio if($_FILES['foto']['name']=="") { echo "<script>alert('Você deve enviar uma foto');history.back();</script>"; exit; } $uploaddir = "fotos/"; // nome da foto $uploadfile = $uploaddir.$_FILES['foto']['name']; if(@move_uploaded_file($_FILES['foto']['tmp_name'], $uploadfile)) { echo "foi enviado: ".$uploadfile."<br>"; // somente reenvia foto se for orientação retrato // caminho até a foto original $imagem = $uploadfile; // pegando informações da foto $exif = exif_read_data($imagem, 0, true); // intervalo para aguardar a conclusão do upload sleep(2); if($exif['THUMBNAIL']['Orientation']=="6" || $exif['IFD0']['Orientation']=="6") { // paisagem = 1 | retrato = 6 $img = imagecreatefromstring(file_get_contents($imagem)); $img = imagerotate($img,-90,0); imagejpeg($img, $uploadfile); } // somente reenvia foto se for orientação retrato } } ?>

O trecho no script acima para rotacionar a foto é esse

// somente reenvia foto se for orientação retrato // caminho até a foto original $imagem = $uploadfile; // pegando informações da foto $exif = exif_read_data($imagem, 0, true); // intervalo para aguardar a conclusão do upload sleep(2); if($exif['THUMBNAIL']['Orientation']=="6" || $exif['IFD0']['Orientation']=="6") { // paisagem = 1 | retrato = 6 $img = imagecreatefromstring(file_get_contents($imagem)); $img = imagerotate($img,-90,0); imagejpeg($img, $uploadfile); } // somente reenvia foto se for orientação retrato

0
A melhor hospedagem para o seu site HostGator!
 
Mais de 1000 postagens
Mais de 1000 postagens
Tópico Autor
Mensagens: 1273
Sexo: Masculino

Re: Upload de foto pelo celular

01-01-2017 15:31

Eu havia visto alguns códigos contendo esse IFD0. Dei, agora, uma pesquisada pelo Google sobre ele. Vou testar com as alterações que você fez.
0
 
Mais de 1000 postagens
Mais de 1000 postagens
Tópico Autor
Mensagens: 1273
Sexo: Masculino

Re: Upload de foto pelo celular

01-01-2017 18:56

Eu encontrei um código básico em PHP que identifica o dispositivo, se móvel ou não, e criei dois arquivos de upload, um para dispositivo móvel e outro para não móvel. Testei a identificação do dispositivo e está funcionando adequadamente, tendo realizado o upload pelo computador.

Adaptei o seu código ao meu, referente ao upload para celular na orientação retrato, mas não está upando. E não exibe mensagem de erro. Simplesmente, se permanece no arquivo de input da foto. Você testou o seu código original? Será algum problema na minha adaptação?

Veja o código, por favor:

<?php $nm1 = $_FILES['pft']['name']; $dir = "fotos/"; //echo $nm1; echo "&nbsp;-&nbsp;"; echo "variável nm1"; echo "<br>"; //echo $dir; echo "&nbsp;-&nbsp;"; echo "variável dir"; echo "<br>"; $upf = "$dir/".$nm1; //echo $upf; echo "&nbsp;-&nbsp;"; echo "variável upf"; echo "<br>"; if(@move_uploaded_file($_FILES['pft']['tmp_name'], $upf)) { echo "foi enviado: ".$upf."<br>"; // somente reenvia foto se for orientação retrato // caminho até a foto original $imagem = $upf; //$imagem = $uploadfile; // pegando informações da foto $exif = exif_read_data($imagem, 0, true); // intervalo para aguardar a conclusão do upload sleep(2); if($exif['THUMBNAIL']['Orientation']=="6" || $exif['IFD0']['Orientation']=="6") { // paisagem = 1 | retrato = 6 $img = imagecreatefromstring(file_get_contents($imagem)); $img = imagerotate($img,-90,0); imagejpeg($img, $upf); } // somente reenvia foto se for orientação retrato } ?>

0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17663
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

Re: Upload de foto pelo celular

01-01-2017 19:04

Passa o formulário do input também.
Também dê chmod 777 na pasta do servidor que recebe as fotos.
0
A melhor hospedagem para o seu site HostGator!
 
Mais de 1000 postagens
Mais de 1000 postagens
Tópico Autor
Mensagens: 1273
Sexo: Masculino

Re: Upload de foto pelo celular

01-01-2017 19:30

Eu tenho um CSS que o decora, mas, basicamente, o formulário é este:

<form method="post" name="frm_cf2" action="#" enctype="multipart/form-data"> <input type="file" name="pft" id="arquivo" /></div> <button type="submit" name="sbm_cf2" value="Inserir" title="Inserir foto <?php echo $_POST['nmr']; ?>.">Inserir</button> </form>

Mas pode não ter haver com o formulário, pois eu havia feito uma teste tentando cadastrar nas duas orientações, mas a foto deitada foi capturada em pé, e upou ela capturada em pé, mas deitada. Mas não upou a foto capturada em pé.

O que tentei foi isto (não sei se fiz certo):

if($exif['THUMBNAIL']['Orientation']=="6" || $exif['IFD0']['Orientation']=="6") { // paisagem = 1 | retrato = 6 $img = imagecreatefromstring(file_get_contents($imagem)); $img = imagerotate($img,-90,0); imagejpeg($img, $upf); } // somente reenvia foto se for orientação retrato if($exif['THUMBNAIL']['Orientation']=="1" || $exif['IFD0']['Orientation']=="1") { // paisagem = 1 | retrato = 6 $img = imagecreatefromstring(file_get_contents($imagem)); $img = imagerotate($img,90,0); imagejpeg($img, $upf); } // somente reenvia foto se for orientação retrato

Eu encontrei uma página com um usuário de um fórum estrangeiro com a mesma dúvida, e outro usuário informou um código que me parece haver funcionado. Mas, cabeça dura que sou, com dificuldade para usar funções, estou pesquisando como faze-lo pois nunca gravo isso. Se quiser, passo o link dessa página. Estou usando um desktop com Windows XP e tem hora que nao acentua. Nao repare, por favor.
0
 
Mais de 1000 postagens
Mais de 1000 postagens
Tópico Autor
Mensagens: 1273
Sexo: Masculino

Re: Upload de foto pelo celular

01-01-2017 19:33

Mudei a permissão da pasta, mas não upou.
0
 
Mais de 1000 postagens
Mais de 1000 postagens
Tópico Autor
Mensagens: 1273
Sexo: Masculino

Re: Upload de foto pelo celular

01-01-2017 19:39

O arquivo com o submit tem isto: $aqv = 'icf_3.php';

O arquivo de upload tem isto:

<form method="post" name="frm_aqv" action="<?php echo $aqv; ?>"> <script type="text/javascript"> document.frm_aqv.submit() </script> </form>

0
 
Mais de 1000 postagens
Mais de 1000 postagens
Tópico Autor
Mensagens: 1273
Sexo: Masculino

Re: Upload de foto pelo celular

01-01-2017 19:41

Este arquivo icf_3.php exibe miniaturas das fotos e botão para excluir e incluir.
0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17663
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

Re: Upload de foto pelo celular

01-01-2017 20:06

Ficou meio confuso a explicação. Você testou o script que postei?

Quanto ao teste eu testei o seu formulário da mensagem 19 com o script da mensagem 12 desse post.

Encontrei um erro. Você colocou uma barra no final da pasta fotos

$dir = "fotos/";

Depois repetiu a barra

$upf = "$dir/".$nm1;

O resultado disso foi:

foi enviado: fotos//retrato.jpg

O correto ali seria:

$upf = "$dir".$nm1;

Ai fiz um teste bem simples aqui. Defini o form action como teste2.php

No teste2.php coloquei o script do post 12, só alterando essa linha

$upf = "$dir".$nm1;

O upload foi certo.

Essa é a foto retrato que está deitada no meu PC. Baixei do meu celular.
retrato1.jpg
Agora a foto da pasta fotos/ após o upload
retrato2.jpg
0
Você não está autorizado a ver ou baixar esse anexo.
A melhor hospedagem para o seu site HostGator!
 
Mais de 1000 postagens
Mais de 1000 postagens
Tópico Autor
Mensagens: 1273
Sexo: Masculino

Re: Upload de foto pelo celular

01-01-2017 20:17

O diretorio é outro. Coloquei $dir = "fotos/" para ilustraçao (por constar de seu exemplo), pois, na  verdade, tenho subpastas dentro da pasta principal das fotos, e criei uma variável por conta disso. 

Eu não testei seu codigo isolado. Vou testa-lo. E ver o que você fez agora.
0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17663
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

Re: Upload de foto pelo celular

01-01-2017 20:33

Tem que verificar se o caminho até a pasta está correto. Testa o script que postei no post 13 também.
0
A melhor hospedagem para o seu site HostGator!
 
Mais de 1000 postagens
Mais de 1000 postagens
Tópico Autor
Mensagens: 1273
Sexo: Masculino

Re: Upload de foto pelo celular

01-01-2017 21:31

Voce (cara, não está acentuando direito, desculpe) tem razao. Desculpe. Upou, sim. Desculpe por nao haver testado seu codigo antes de tentar adapta-lo ao meu.

Testei seu codigo de hoje.

Arquivo teste1.php:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta name="viewport" content="width=device-width, initial-scale=1"> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> </head> <body> <form enctype="multipart/form-data" method="POST" action="teste.php"> <input type="file" name="foto" value=""> <br> <input type="submit" name="envio"> </form> <?php if(isset($_POST['envio'])) { // verificando campo vazio if($_FILES['foto']['name']=="") { echo "<script>alert('Você deve enviar uma foto');history.back();</script>"; exit; } $uploaddir = "fotos/"; // nome da foto $uploadfile = $uploaddir.$_FILES['foto']['name']; if(@move_uploaded_file($_FILES['foto']['tmp_name'], $uploadfile)) { echo "foi enviado: ".$uploadfile."<br>"; // somente reenvia foto se for orientação retrato // caminho até a foto original $imagem = $uploadfile; // pegando informações da foto $exif = exif_read_data($imagem, 0, true); // intervalo para aguardar a conclusão do upload sleep(2); if($exif['THUMBNAIL']['Orientation']=="6" || $exif['IFD0']['Orientation']=="6") { // paisagem = 1 | retrato = 6 $img = imagecreatefromstring(file_get_contents($imagem)); $img = imagerotate($img,-90,0); imagejpeg($img, $uploadfile); } // somente reenvia foto se for orientação retrato } } ?> </body> </html>

Upou belezinha.

Agora, estou tentando upar a foto na horizontal.

Por intuição, fiz conforme abaixo:

Arquivo teste2.php:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta name="viewport" content="width=device-width, initial-scale=1"> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> </head> <body> <form enctype="multipart/form-data" method="POST" action="teste2.php"> <input type="file" name="foto" value=""> <br> <input type="submit" name="envio"> </form> <?php if(isset($_POST['envio'])) { // verificando campo vazio if($_FILES['foto']['name']=="") { echo "<script>alert('Você deve enviar uma foto');history.back();</script>"; exit; } $uploaddir = "fotos/"; // nome da foto $uploadfile = $uploaddir.$_FILES['foto']['name']; if(@move_uploaded_file($_FILES['foto']['tmp_name'], $uploadfile)) { echo "foi enviado: ".$uploadfile."<br>"; // somente reenvia foto se for orientação retrato // caminho até a foto original $imagem = $uploadfile; // pegando informações da foto $exif = exif_read_data($imagem, 0, true); // intervalo para aguardar a conclusão do upload sleep(2); if($exif['THUMBNAIL']['Orientation']=="6" || $exif['IFD0']['Orientation']=="6") { // paisagem = 1 | retrato = 6 $img = imagecreatefromstring(file_get_contents($imagem)); $img = imagerotate($img,-90,0); imagejpeg($img, $uploadfile); } // somente reenvia foto se for orientação retrato else{ if($exif['THUMBNAIL']['Orientation']=="1" || $exif['IFD0']['Orientation']=="1") { //if($exif['THUMBNAIL']['Orientation']=="6" || $exif['IFD0']['Orientation']=="6") { // paisagem = 1 | retrato = 6 $img = imagecreatefromstring(file_get_contents($imagem)); $img = imagerotate($img,90,0); //$img = imagerotate($img,-90,0); imagejpeg($img, $uploadfile); } // somente reenvia foto se for orientação retrato } } } ?> </body> </html>

A foto capturada na vertical é upada na vertical, o que está correto.

Porém a foto capturada na horizontal é upada na orientação vertical. O que falta para a foto capturada na horizontal ser upada na horizontal?
0
 
Mais de 1000 postagens
Mais de 1000 postagens
Tópico Autor
Mensagens: 1273
Sexo: Masculino

Re: Upload de foto pelo celular

01-01-2017 21:37

Somente uma observaçao: creio que descobri a razão de nao upar no meu codigo: uso, em parte dele,  isto: $img = imagecreatefromjpeg($upf); e no seu código ha $img = imagecreatefromstring(file_get_contents($imagem)); e pode estar dando algum conflito pela coincidência dos nomes das variaveis. No código original que utilizo, eu crio miniaturas, e descarto a foto normal por unlink. Depois, quero ver como fica esse código em face das miniaturas, através das quais eu reduzo ao máximo o tamanho e a resoluçao das fotos.
0

Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado