Ir para conteúdo
Fórum Script Brasil
  • 0

post com input file agendado e automático


elias.nagash

Pergunta

Bom Dia... estou enviando um arquivo em .csv (arquivo de texto separado por ";") por POST junto com alguns dados de acesso... até aí tudo funciona perfeitamente.. mas, o que eu realmente quero fazer é automatizar ao máximo meu processo de envio. Ou seja, não quer ter que clicar no botão "Selecionar Arquivo" escolher aquele "arquivo.csv" de sempre e depois ainda ter que clicar no botão "Enviar". Gostaria de saber se é possível apenas agendar um horário no meu servidor para enviar este arquivo. Abaixo está o código simples que estou utilizando para envio (Obviamente por segurança alterei os dados de acesso):

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Envia SMS</title>
</head>
&lt;script LANGUAGE="Javascript">
<!--
function disableForm(theform) {
  if (document.all || document.getElementById) {
    for (i = 0; i < theform.length; i++) {
      var tempobj = theform.elements[i];
      if (tempobj.type.toLowerCase() == "submit") {
         tempobj.disabled = true;
         //tempobj.value = "Enviando...";
      }
    }
    return true;
  } else {
    return false;
  }
}
-->
</SCRIPT>
<body>
<form name="importForm" method="post" action="https://XXXXXXXXXXX" class="nospace" enctype="multipart/form-data" onSubmit="return disableForm(this)" charset="ISO-8859-1">
<input type="hidden" name="dispatch" value="sendMultiple">
<input type="edit" name="account" value="NOME_DA_CONTA" class="main" readonly="readonly">
<input type="edit" name="code" value="COD_ACESSO" class="main" readonly="readonly">
<input type="edit" name="type" value="D" class="main" readonly="readonly">
<input type="file" name="file">
<input type="submit" value="Enviar">
</form>
</form>
</body>
</html>

Resumindo: Existe alguma forma de fazer o código acima buscar na pasta "X" pelo arquivo "Y" e enviar se for "T" horas?

Link para o comentário
Compartilhar em outros sites

8 respostass a esta questão

Posts Recomendados

  • 0

ahh outro detalhe que esqueci de mencionar é que eu sei, que removendo o

<input type="submit" value="Enviar">
e colocando ali no body
body onload="return disableForm(this)"

eu já elimino a necessidade de clicar no botão "Enviar", porém, ainda esbarro no problema do arquivo... como programar para buscar o arquivo na pasta e fazer o "upload" ou "post" automaticamente?

Link para o comentário
Compartilhar em outros sites

  • 0
Hum, creio que isso apenas com linguagem de programação, e talvez no mínimo com javascript, somente com HTML tenho certeza que não é possível fazer esse 'agendamento'.

Você pode usar alguma linguagem de programação no seu arquivo? PHP, ASP, etc...

Sim eu tenho suporte pra PHP e ASP no servidor. Será que pedindo ajuda na seção de PHP o pessoal saiba ajudar?

Link para o comentário
Compartilhar em outros sites

  • 0

O arquivo terá sempre o mesmo nome e sempre estará no mesmo diretório? se sim, basta colocar o parâmetro value com o caminho padrão do arquivo no input de tipo file. Para executar de tempos em tempos creio que basta usar o agendador de tarefas (windows) ou o cron (linux) do sistema operacional do servidor para executar a página na frequência que desejar.

Link para o comentário
Compartilhar em outros sites

  • 0
O arquivo terá sempre o mesmo nome e sempre estará no mesmo diretório? se sim, basta colocar o parâmetro value com o caminho padrão do arquivo no input de tipo file. Para executar de tempos em tempos creio que basta usar o agendador de tarefas (windows) ou o cron (linux) do sistema operacional do servidor para executar a página na frequência que desejar.

Sim o arquivo sempre terá o mesmo nome... eu já tentei colocar o value com o caminho padrão do arquivo como:

value="file://arquivo.csv"
ou
value="arquivo.csv"
ou
value="file:C:\\arquivo.csv"
de tudo quanto é jeito, mas, não funciona ele não carrega o arquivo.. porque eu recebo uma resposta da outra ponta avisando que o arquivo ou é vazio ou não foi carregado.. vazio ele não está. Então não está sendo carregado. Vocês sabem se existe alguma forma de pegar este arquivo como uma variável PHP e mandar junto com esse FORM em HTML? Por exemplo:
<?php
$arquivo = "arquivo.csv";
?>
Depois pegar essa variável $arquivo e sei lá de alguma forma mandar junto com esse FORM que acaba sendo segmentado pelo JAVASCRIPT? Svjets se você tiver um exemplo de como direcionar aquele "value" para o arquivo já ajuda.. eu sei que existe algumas coisas em JAVASCRIPT que se pode usar mas não conheço bem como:
<input type="file = file.click()" name="file">

Ao chegar nesta parte do código ele já clica no botão browse sozinho... deve ter outro código pra selecionar;

Editado por elias.nagash
Link para o comentário
Compartilhar em outros sites

  • 0

valeu aí pela ajuda galera.. eu conseguir resolver a parte de buscar o arquivo automaticamente com PHP... e achei um código em PHP que manda os dados do arquivo linha por linha e recebe a resposta da outra ponta por partes tb.. agora só me falta agendar esta página para ser rodada em um certo horário.. mas isso acho q vou fazer no Linux... estou postando o código abaixo:

<?php
function EnvioMultiplo($conta,$codigo,$tipo,$msg_lista){

        $postdata  = "dispatch=sendMultiple&";
        $postdata .= "account=".$conta."&";
        $postdata .= "code=".$codigo."&";
        $postdata .= "type=".$tipo."&";
        $postdata .= "list=".$msg_lista;

        $host = "xxxxxx.com.br";
        $uri = "/xxxxxx/xxxxxx.do";
        $da = fsockopen($host, 80, $errno, $errstr);

        if (!$da && $errno != 0) {
           echo "$errstr ($errno)<br/>\n";
           echo $da;
        } else {
                $response = "";
                $output ="POST $uri  HTTP/1.0\r\n";
                $output.="Host: $host\r\n";
                $output.="User-Agent: PHP Script\r\n";
                $output.="Content-Type: application/x-www-form-urlencoded; charset=ISO-8859-1\r\n";
                $output.="Content-Length: ".strlen($postdata)."\r\n";
                $output.="Connection: close\r\n\r\n";
                $output.=$postdata;
                fwrite($da, $output);
                while (!feof($da)) $resposta.=fgets($da, 128);
                $resposta=split("\r\n\r\n",$resposta);
                $header=$resposta[0];
                $conteudo_resposta=$resposta[1];
                if(!(strpos($header,"Transfer-Encoding: chunked")===false)){
                        $aux=split("\r\n",$conteudo_resposta);
                        for($i=0;$i<count($aux);$i++)
                        if($i==0 || ($i%2==0))
                           $aux[$i]="";
                        $conteudo_resposta=implode("",$aux);
                }
                return chop($conteudo_resposta);
        }
}

$arquivo = "arquivo_teste.csv";
$msg_lista = file($arquivo);

foreach ($msg_lista as $num_linha => $linha){
    $str_concatenado.=$linha;
    $str_concatenado.="\n";
}

$resposta = EnvioMultiplo("NOME_DA_CONTA", "COD_ACESSO", "TIPO_DE_ARQUIVO", $str_concatenado);
echo $resposta;
?>

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152k
    • Posts
      651,7k
×
×
  • Criar Novo...