Jump to content
Fórum Script Brasil
  • 0

post com input file agendado e automático


Question

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 to post
Share on other sites

8 answers to this question

Recommended Posts

  • 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 to post
Share on other 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...

Link to post
Share on other 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 to post
Share on other 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 to post
Share on other 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;

Edited by elias.nagash
Link to post
Share on other 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 to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



  • Forum Statistics

    • Total Topics
      149287
    • Total Posts
      645679
×
×
  • Create New...