AJAX e JSP - Ajuda Urgente

4 respostas
C

Pessoal,

Seguinte, tenho a seguinte página JSP:

<%@ page
   import="java.io.*"
   import="java.util.*"
   import="org.apache.commons.fileupload.*"
   contentType="text/plain"
%>
<%
   boolean isMultipart = FileUpload.isMultipartContent(request);
   if (isMultipart) {
       // Cria um novo gerenciador de arquivos de upload
      DiskFileUpload upload = new DiskFileUpload();

      /* Seta os parametros do upload: Tamanho e diretorio
         Se o arquivo for muito pequeno, este e armazenado na memoria; Caso contrario,
       e armazenado no disco como arquivo temporario*/
      upload.setSizeMax(50*1024*1024); //50Mb
      upload.setRepositoryPath("/opt");

      // Parse the request
      List items = upload.parseRequest(request);

      Iterator it = items.iterator();

      while (it.hasNext()) {
         FileItem fitem = (FileItem) it.next();
         if (!fitem.isFormField()) {
            /*copiando o conteudo do arquivo passado para /opt/phylogenia/entrada*/
            fitem.write(new File ("/opt/phylogenia/entradas/" + fitem.getName()));

%>
<%
         }
      }
   }
%>

Tenho que acessar ela atraves da index.jsp para fazer meu upload. Entretanto, não consigo invocar o arquivo acima. Estou tentando usar ajax mas todas as minhas tentativas foram em vão. Já vasculhei a net e fiz diversos testes sem resultado.

Abaixo o código da index.jsp

<%@page contentType="text/html" pageEncoding="UTF-8"%>





<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
   "http://www.w3.org/TR/html4/loose.dtd">

<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>Executa o Blast 2.2.19</title>
    </head>
    <script  type="text/javascript">


          function doRequest(){

               var idField = document.getElementById("testeup");
               var url = encodeURIComponent(idField.value);
               alert(url);
               if (typeof XMLHttpRequest != "undefined") {
                    req = new XMLHttpRequest();
               } else if (window.ActiveXObject) {
                    req = new ActiveXObject("Microsoft.XMLHTTP");
               }

               req.open("POST",'upload.jsp',true);
               req.onreadystatechange = callback;
               req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
               req.send(encodeURIComponent(idField.value));
           }

           function callback(){
              if (req.readyState == 4) {
                    if (req.status == 200 || req.status == 0) {
                        alert("Encontrou");
                    }
               }
               else{
                  
               }
           }

           function setMessage(){

            var temp = document.getElementById("mensagem");

                temp.innerHTML = "<div style=\"color:red\"> teste </ div>";;
           }

    </script>

    <body>

      
      <div id="parteDoUpload">
            
                <input name="testeup" type="file" id="testeup" ></input>
                <input type="submit" onclick="doRequest()"></input>
            
       </div>
       <div id="mensagem">  </div>

        <form name="FormBlast" method="post" action="BlastServlet" id="FormBlast">

            <p><h3>Bem vindo ao serviço que executa o programa Blast 2.2.19:</h3></p>
            <p>
            <p>Insira o nome do programa a ser executado:
                <select name="Programa" disabled="true" id="Programa">
                    <option value="blastn">blastn</option>
                    <option value="blastp">blastp</option>
                    <option value="blastx">blastx</option>
                    <option value="tblastn">tblastn</option>
                    <option value="tblastx">tblastn</option>
                </select>
            </p>
            <p>Insira o nome da base de dados a ser consultada:
                <select name="DB" disabled="true" id="DB">
                    <option value="ecoli.nt">ecoli.nt</option>
                </select>
            </p>

            <p>Forneça seu arquivo de entrada:
                <input name="FileIn" id="InputFileIn" value="" disabled="true"></input>
            </p>

           <p>Insira o nome do arquivo de saída:
            <input name="FileOut" cols="15" id="InputFileOut" disabled="true"></input></p>
            <input type="submit" value="Executar o Blast" name="BtBlast">
        </form>


    </body>
</html>

Alguém tem alguma idéi para me ajudar?

Obrigado !

4 Respostas

Pedrosa

Voce não consegue usar Ajax e Upload diretamente por questão de segurança, mas tem gente que faz algumas gambiarras com iframe, cara, primeira coisa tire esse scriplet do jsp, deixe sua parte de upload em uma Servlet.

Procure no google ajax com upload e vai achar algumas aventuras de quem já tentou fazer isso.

Pedrosa

Aqui explica de forma bem facil de entender:
http://www.oficinadanet.com.br/index.php?acao=colunas_show&id=224

rrigoni

Proure por JqFileUpload é um flash que envia sem dar refresh da página,

Se forem mt arquivos use JQuery File Upload.

E por favor, coloque este código dentro de um servlet.

Ronaldo

C

Valeu as dicas pessoal,

Resolvi o problema utilizando JQuery, que parece ser bem poderoso !

Obrigado

Criado 16 de março de 2009
Ultima resposta 18 de mar. de 2009
Respostas 4
Participantes 3