Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

MichellHenrique

Problema com upload em cliente android

Recommended Posts

Ola pessoal,

 

estou com problema em uploads em clientes android, mesmo dando permissão para o navegador acessar o armazenamento

do celular tem arquivos que eu consigo subir e outros que não consigo. O sistema de upload é bem simples, esta funcionando

bem no windows e no linux. Suspeito que o problema esteja diretamente relacionado as permissões no android mas ainda nao

achei uma solução. Alguém ja passou por isso?

 

Obs: Testei nos navegadores chrome, firefox e operamini no android e todos apresentam o mesmo problema...

 

index.html

...
	<form method="POST" action="upload.php" enctype="multipart/form-data">
            <input type="file" name="file1" id="file1">
            <input type="submit" value="Enviar">
        </form>
...

 

upload.php

<?php
// Carrega arquivo de configurações
require('config.php');

// Recebe arquivo a ser enviado de forma ternária
$arquivo1 = (isset($_FILES['file1'])) ? $_FILES['file1'] : null;

// Essa parte é por desencargo de consiencia caso por
// ventura o arquivo estivesse trasendo permissões
// anteriores do android que impedissem sua movimentação
if(chmod($arquivo1['tmp_name'], 0777)){
    echo 'Permissão mudada';
}else{
    echo 'Permissão negada';
}

// Aqui um teste simples para saber se o arquivo foi
// transferido para a pasta temporaria do servidor
if(file_exists($arquivo1['tmp_name'])){
  echo 'O arquivo existe';
}else{
  echo 'O arquivo não existe';
}

// Move o arquivo baixado para a pasta informada no
// arquivo config.php e mostra mensagem sobre a transferência
echo move_uploaded_file($arquivo1['tmp_name'], $pastaupload.$arquivo1['name']) ? 'Envio Completo!' : 'Falha No Envio!';

?>

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Depois de testar e retestar o problema persistia, acabei deixando de lado momentaneamente

esse problema do android e dei continuidade no projeto, eis que com uma baita cagad* eu

consegui acidentalmente deletar a raiz de todo meu website, por sorte estava no computador

de desenvolvimento e a alguns dias tinha subido tudo para a produção... levei algumas

boas horas para refazer tudo o que havia perdido e ao finalizar atualizei tudo com o servidor...

 

Enfim, ao ir testando o sistema percebi que agora, mesmo no computador, existem arquivos que

consigo fazer upload e outros não, igual estava acontecendo no android... Isso porque estava

usando o mesmo código que postei aqui no forum antes e depois de perder meus arquivos.

 

Fiquei um pouco confuso, resetei as permissoes das pastas e testei os mesmos códigos de

diferentes maneiras, resetei o servidor web e mesmo assim nada feito. Acabei subindo o

serviço para o servidor e para minha surpresa tudo funcionou 100%, consegui upar todos

os arquivos até mesmo no andoid que estava com problemas anteriormente.

 

Como dizem por aí: -Há males que vem para bem...

 

Enfim, agora ficou a dúvida: nao cheguei a comparar todo o arquivo php.ini dos 2 mas a parte

que trata de upload estão iguais, a unica mudança que fiz foi aumentar o tamanho do upload:

 

upload_max_filesize = 20M

 

Também tem a diferença que no desenvolvimento utilizo um servidor web com apache2 + php 7.2

através do docker e na produção uso apache2 + php7.0.

 

Teria como vocês testarem esse sisteminha de upload na maquina de vocês e me dar um feedback?

 

upload:

<!doctype html>
<html>
  <form method="POST" action="upload.php" enctype="multipart/form-data">
    <input type="file" name="file1" id="file1">
    <input type="submit" value="Enviar">
  </form>
</html>

 

upload.php:

<?php

// Recebe arquivo a ser enviado de forma ternária
$arquivo1 = (isset($_FILES['file1'])) ? $_FILES['file1'] : null;

// Move o arquivo baixado para a pasta de destino
if (move_uploaded_file($arquivo1['tmp_name'], $arquivo1['name'])){
    echo 'Movido!';
}else{
    echo 'Erro ao Mover!';
}

?>

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Vapo, ninguem teve coragem de testar uma coisa tão simples para dar um feedback. Tá né...

 

Enfim, caso alguem tenha o mesmo problema futuramente acabei resolvendo da seguinte forma:

 

Entrei no docker e atualizei o sistema:

# apt update

#apt upgrade

 

Eis que apareceu uma atualização para o php e para o arquivo php.ini, e como a unica modificação

que havia realizado era na linha "upload_max_filesize = 20M" resolvi subistituir o arquivo php.ini

anterior pelo novo. Também refiz as permissões na pasta do docker e na máquina física pois tenho

um volume montado no docker com a raíz dos meus sites na máquina física e depois de reiniciar

todo o serviço funcionou belezinha.

 

:thumbsup:

Compartilhar este post


Link para o post
Compartilhar em outros sites

  • Conteúdo Similar

    • Por pashaa
      Como podem ver a google não aceita mais a SDK da unity ads por motivos da empresa
      Então resolvi remover toda a SDK do meu código. Libs,linhas de comando, tudo. e mesmo assim ainda ela acusa que tenho a sdk dentro do meu app
      Já tenho mais ou menos 1 ano programando em android e nunca tinha visto algo sobre ou esse erro persistir já que tirei tudo de dentro do app
      A minha dúvida é, onde estou errando? Onde deixei alguma coisa sobre essa sdk?Que inclusive coloquei pra teste a uns 5 meses atrás e até tinha esquecido dela kk
      Peço que me ajudem dando sugestões de como remover por completo pois eu praticamente reverti o processo de adicionar a SDK e todo tipo de linha relacionada a unity.ads
       

    • Por Fernando Rafael
      Bom dia, estou baixando arquivos que estão em uma hospedagem própria para serem acessados por um aplicativo que estou desenvolvendo (consigo fazer normalmente utilizando os comandos citado mais a baixo), porém os arquivos ficam salvos na pasta padrão de DOWNLOADS do Android, minha intenção não é ficar acumulando estes arquivos no aparelho, ou esperar que o usuário exclua manualmente, gostaria em salva-los em uma pasta interna do aplicativo para que seja possível excluir automaticamente pelo próprio aplicativo, já tentei como alternativa excluir esses arquivos da pasta DOWNLOADS, mas não consegui...
       
      Segue o código que estou usando para baixar os arquivos, queria adaptar para baixar direto na pasta interna do aplicativo, ou como alternativa caso isso não seja possível, conseguir excluir esses arquivos da pasta DOWNLOADS do Android...
       
      String url = "https://www.site.com/arquivo.pdf"; //Arquivo que vou baixar DownloadManager.Request request = new DownloadManager.Request(Uri.parse(url)); request.setDescription("Alguma descrição"); request.setTitle("Algum titulo"); //A notificação de conslusão só esta disponível a partir da API 11 if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) { request.allowScanningByMediaScanner(); request.setNotificationVisibility(DownloadManager.Request.VISIBILITY_VISIBLE_NOTIFY_COMPLETED); } //Salvando o arquivo no diretório de Downloads request.setDestinationInExternalPublicDir(Environment.DIRECTORY_DOWNLOADS, "arquivo.pdf"); DownloadManager manager = (DownloadManager) getSystemService(DOWNLOAD_SERVICE); manager.enqueue(request);  
    • Por AlexandreHenrique
      Olá pessoal. preciso de uma ajuda com o meu projeto de upload.
      O projeto de upload roda no IIS + Php;
      Tenho um script que ta enviando  o arquivo para o diretório correto.
      O problema é que ao tentar acessar esse arquivo via URL, o anexo não abre  e exibe a mensagem abaixo.
       

      Notei que o arquivo ao cair no DIR, ele entra sem permissões (vi em propriedades), se eu editar o mesmo alterando as permissões, ele carrega pela url do meu site.
      Quero que o arquivo enviado pelo script caia no DIR correta com as devidas permissões pra eu poder ler no navegador via URL;
       
      Já tentei resolver de toda forma mas nao tive sucesso;.
      No Apache isso é mais simples, mas no IIS ta complicado;
       
       
       
      Alguem pode me dá uma dica?
    • Por Fernando Rafael
      Bom dia, alguém poderia me ajudar com esse problema? 
       
      Estou fazendo um aplicativo bem simples em que sua única função será criar uma pasta no celular (em local acessível pelo gerenciador de arquivos do usuário), e posteriormente copiar arquivos de outro local ou rede e colocar nesta pasta.
       
      Fiz algumas pesquisas, mas por incrível que pareça não encontrei algo que tenha funcionando. Também tenho dúvidas sobre qual seria o equivalente ao "C:/" do Android.
    • Por Caio Vargas
      Fala pessoa tudo tranquilo ?
      estou com um problema eu fiz um sistema de upload onde tem a marca dagua  o problema e que quando o cadastro da capa e pequena a imagem da marca dagua fica grande
      e qauando a capa e grande  a imagem da marca dagua fica pequena alguem poderia me ajudar 
×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.