Upload arquivos em jsp

Estou iniciando nessa plataforma jsp!
Estou com um problema quando faço o upload…
Quando eu executo a funcao atravez do botao “submit” ele nao passa os parametros para o arquivo jsp!!!
Quando retiro o comando enc-type ele passa os parametros do combobox e do radio button mas ele nao carregar o arquivo!!!

carregararquivo.jsp

<html> 
    <head> 
    </head>     
    <body>     
    <center><h3><u>Upload de Arquivos</u></h3></center>
      <form ACTION="upload.jsp" ENCTYPE="MULTIPART/FORM-DATA" method="POST"><br>
      URA: 
          <select name="cmbbox" id="cmbbox">
	      <option selected value="nenhum">Selecione uma ura...</option>
              <option value="gmk">GMK</option>
	      <option value="avaya">AVAYA</option>
  	      <option value="uratec">URATEC</option>
	      <option value="dialout">DIALOUT</option>
 	      <option value="ura_paa">PAA</option>
	      <option value="ura_ri">RI</option>
          </select>
	  <br><br>
          Tipo:          
          <input type="radio" name="radioteste" id="radioteste" value="portas">Portas  
          <input type="radio" name="radioteste" id="radioteste" value="fluxos" >Fluxos<br><br>
          <INPUT TYPE="file" name="filename"> <br> 
          <INPUT TYPE="SUBMIT" name="Enviar" value="Enviar"> 
           
      </form>     
    </body> 
</html>  

upload.jsp

[code]
<%@ page import="java.io.*"%>
<%
String valorcombo = request.getParameter("cmbbox");
String valorradio = request.getParameter("radioteste");
String savePath = "\C:\Program Files\Apache Software Foundation\Tomcat 6.0\webapps\Site\"+valorcombo+"\"+valorradio+"\";

String filename = "";

ServletInputStream in = request.getInputStream();

byte&#91;&#93; line = new byte&#91;128&#93;; 
int i = in.readLine&#40;line, 0, 128&#41;; 
int boundaryLength = i - 2; 
String boundary = new String&#40;line, 0, boundaryLength&#41;; 

while&#40;i != -1&#41; &#123; 

   String newLine = new String&#40;line, 0, i&#41;; 
    
         if&#40;newLine.startsWith&#40;&quot;Content-Disposition&#58; form-data; name=\&quot;&quot;&#41;&#41; &#123; 
          
            String s = new String&#40;line, 0, i-2&#41;; 
            int pos = s.indexOf&#40;&quot;filename=\&quot;&quot;&#41;; 
          
                                 if&#40;pos != -1&#41; &#123; 
                                 
                                       String filepath = s.substring&#40;pos+10, s.length&#40;&#41; - 1&#41;; 
                                        
                                       pos = filepath.lastIndexOf&#40;&quot;\\&quot;&#41;; 
                                        
                                       if&#40;pos != -1&#41; &#123; 
                                        
                                          filename = filepath.substring&#40;pos + 1&#41;; 
                                          
                                       &#125; else &#123; 
                                        
                                          filename = filepath;                                               
                                       &#125;                                             
                                       i = in.readLine&#40;line, 0, 128&#41;; 
                                       i = in.readLine&#40;line, 0, 128&#41;; 
                                       i = in.readLine&#40;line, 0, 128&#41;; 
                                    
                                       ByteArrayOutputStream buffer = new ByteArrayOutputStream&#40;&#41;; 
                                       newLine = new String&#40;line, 0, i&#41;; 
                                        
                                       while&#40;i != -1 &amp;&amp; !newLine.startsWith&#40;boundary&#41;&#41; &#123; 
                                        
                                          buffer.write&#40;line, 0, i&#41;; 
                                          i = in.readLine&#40;line, 0, 128&#41;; 
                                          newLine = new String&#40;line, 0, i&#41;; 
                                          
                                       &#125; 
                                       try &#123; 
                                           RandomAccessFile f = new RandomAccessFile&#40;savePath + filename, &quot;rw&quot;&#41;; 
                                           byte&#91;&#93; bytes = buffer.toByteArray&#40;&#41;; 
                                           f.write&#40;bytes, 0, bytes.length-2&#41;; 
                                           f.close&#40;&#41;; 
				       out.println&#40;&quot;Arquivo carregado&quot;&#41;;	
                                      &#125; catch &#40;Exception e&#41; &#123; 
                                           out.println&#40;&quot;nao foi possivel fazer o upload do arquivo&quot;&#41;;
				  &#125;                                                                       
                                 &#125;                      
        &#125; 
      
   i = in.readLine&#40;line, 0 ,128&#41;;     
&#125; 

%> [/code]

Me ajudem por favor!!!
abraços!

Olá MMathias,

No arquivo upload.jsp você não deverá utilizar o request e sim o MultipartRequest

MultipartRequest multi= new MultipartRequest&#40;request,&quot;diretorio a salvar&quot; &#41;; multi.getParameter&#40;&quot;campo&quot;&#41;;

Valeu

Olá!

Eu tentei fazer o que voce disse ,mas deu um erro na linha 4!
Sera que tem que importar alguma biblioteca?

&lt;%@ page import=&quot;java.io.*&quot;%&gt; 
&lt;% 
String savePath=&quot;\\C&#58;\\Program Files\\Apache Software Foundation\\Tomcat 6.0\\webapps\\Site\\&quot;;
MultipartRequest multi = new MultipartRequest&#40;request,savePath&#41;;

String valorcombo =  multi.getParameter&#40;&quot;cmbbox&quot;&#41;;
String valorradio =  multi.getParameter&#40;&quot;radioteste&quot;&#41;;
out.println&#40;&quot;valorcombo&quot;&#41;;
savePath =savePath+valorcombo+&quot;\\&quot;+valorradio+&quot;\\&quot;;

valeu!!

você precisa importar a biblioteca cos.jar

Agora ta dando erro na linha 7!!

[code]
<%@ page import="java.io.*"%>
<%@ page import="cos"%>
<%
String savePath="\C:\Program Files\Apache Software Foundation\Tomcat 6.0\webapps\Site\";
MultipartRequest multi = new MultipartRequest(request,savePath);

String valorcombo = multi.getParameter("cmbbox");
String valorradio = multi.getParameter("radioteste");
out.println("valorcombo");
savePath += valorcombo+"\"+valorradio+"\";[/code]

MMathias,

qual é a linha 7 e qual o erro??

org.apache.jasper.JasperException: Unable to compile class for JSP:

An error occurred at line: 7 in the generated java file
The import cos cannot be resolved

An error occurred at line: 5 in the jsp file: /upload.jsp
MultipartRequest cannot be resolved to a type
2: <%@ page import=“cos”%>
3: <%
4: String savePath="\C:\Program Files\Apache Software Foundation\Tomcat 6.0\webapps\Site\";
5: MultipartRequest multi = new MultipartRequest(request,savePath);
6:
7: String valorcombo = multi.getParameter(“cmbbox”);
8: String valorradio = multi.getParameter(“radioteste”);

An error occurred at line: 5 in the jsp file: /upload.jsp
MultipartRequest cannot be resolved to a type
2: <%@ page import=“cos”%>
3: <%
4: String savePath="\C:\Program Files\Apache Software Foundation\Tomcat 6.0\webapps\Site\";
5: MultipartRequest multi = new MultipartRequest(request,savePath);
6:
7: String valorcombo = multi.getParameter(“cmbbox”);
8: String valorradio = multi.getParameter(“radioteste”);

MMathias,

o import que você está fazendo está incorreto…você primeiro precisa baixar a bibloteca cos.jar e coloca-la dentro da pasta lib que está localizada dentro de WEB-INF. Vou enviar para seu e-mail esta biblioteca certo.

E abaixo segue um exemplo de como fazer o upload.

[code]<form action="upload.jsp" method="post" enctype="multipart/form-data">

				&lt;table&gt;					   
				   &lt;tr&gt;
					&lt;td align=&quot;right&quot;&gt;Documento/Arquivo &#58; &lt;/td&gt;
					&lt;td align=&quot;left&quot;&gt;&lt;input type=&quot;file&quot; name=&quot;documento&quot; validar=&quot;texto&quot; nome=&quot;Arquivo&quot; size=&quot;50&quot; /&gt;&lt;/td&gt;

<td><input type="submit" value="enviar" /></td>
</tr>
</form>[/code]

E na página upload.jsp

[code]
<%@ page import="com.oreilly.servlet.MultipartRequest" %>
<%@ page import="java.util." %>
<%@ page import="java.io.
" %>
<%
String pasta = getServletContext().getRealPath("/")+"/anexos/";
String valorcombo = "";
String valorradio = "";
MultipartRequest mpr = new MultipartRequest( request, pasta, 10240000);

File arquivo = mpr.getFile("documento");

if( arquivo != null ){

valorcombo =  mpr.getParameter&#40;&quot;cmbbox&quot;&#41;;

valorradio = mpr.getParameter("radioteste");
}
%>[/code]

Espero ter ajudado

Eu nao sei onde eu estou errando…pois eu fiz o que vc falou!!!
eu nao sei o que os comandos significam apenas coloquei…eu nao estou usando uma servlet!

esse é o meu upload.jsp

[code]<%@ page import="com.oreilly.servlet.MultipartRequest" %>
<%@ page import="java.util." %>
<%@ page import="java.io.
" %>
<%
String valorcombo = "";
String valorradio = "";
String savePath = getServletContext().getRealPath("/");

MultipartRequest mpr = new MultipartRequest( request, savePath, 10240000);
File arquivo = mpr.getFile("filename");

if( arquivo != null ){

valorcombo =  mpr.getParameter&#40;&quot;cmbbox&quot;&#41;; 
valorradio =  mpr.getParameter&#40;&quot;radioteste&quot;&#41;; 
savePath += valorcombo+&quot;\\&quot;+valorradio+&quot;\\&quot;;

}

String filname = "";
ServletInputStream in = request.getInputStream();
byte[] line = new byte[128];
int i = in.readLine(line, 0, 128);
int boundaryLength = i - 2;
String boundary = new String(line, 0, boundaryLength);
while(i != -1) {
String newLine = new String(line, 0, i);
if(newLine.startsWith("Content-Disposition: form-data; name=&quot;")) {
String s = new String(line, 0, i-2);
int pos = s.indexOf("filname=&quot;");
if(pos != -1) {
String filepath = s.substring(pos+10, s.length() - 1);
pos = filepath.lastIndexOf("\");
if(pos != -1) {
filname = filepath.substring(pos + 1);
} else {
filname = filepath;
}
i = in.readLine(line, 0, 128);
i = in.readLine(line, 0, 128);
i = in.readLine(line, 0, 128);
ByteArrayOutputStream buffer = new ByteArrayOutputStream();
newLine = new String(line, 0, i);
while(i != -1 && !newLine.startsWith(boundary)) {
buffer.write(line, 0, i);
i = in.readLine(line, 0, 128);
newLine = new String(line, 0, i);
}
try {
RandomAccessFile f = new RandomAccessFile(savePath + filname, "rw");
byte[] bytes = buffer.toByteArray();
f.write(bytes, 0, bytes.length-2);
f.close();
out.println("Arquivo carregado");
}catch (Exception e) {
out.println("nao foi possivel fazer o upload do arquivo");
}
}
}

   i = in.readLine&#40;line, 0 ,128&#41;;     
&#125; 

%> [/code]

esse é o carregararquivo.jsp

&lt;html&gt; 
    &lt;head&gt; 
    &lt;/head&gt;     
    &lt;body&gt;     
    &lt;center&gt;&lt;h3&gt;&lt;u&gt;Upload de Arquivos&lt;/u&gt;&lt;/h3&gt;&lt;/center&gt;
      &lt;form ACTION=&quot;upload.jsp&quot; ENCTYPE=&quot;MULTIPART/FORM-DATA&quot; method=&quot;POST&quot;&gt;&lt;br&gt;
      URA&#58;&amp;nbsp;
          &lt;select name=&quot;cmbbox&quot; id=&quot;cmbbox&quot;&gt;
	      &lt;option selected value=&quot;nenhum&quot;&gt;Selecione uma ura...&lt;/option&gt;
              &lt;option value=&quot;gmk&quot;&gt;GMK&lt;/option&gt;
	      &lt;option value=&quot;avaya&quot;&gt;AVAYA&lt;/option&gt;
  	      &lt;option value=&quot;uratec&quot;&gt;URATEC&lt;/option&gt;
	      &lt;option value=&quot;dialout&quot;&gt;DIALOUT&lt;/option&gt;
 	      &lt;option value=&quot;ura_paa&quot;&gt;PAA&lt;/option&gt;
	      &lt;option value=&quot;ura_ri&quot;&gt;RI&lt;/option&gt;
          &lt;/select&gt;
	  &lt;br&gt;&lt;br&gt;
          Tipo&#58;          
          &lt;input type=&quot;radio&quot; name=&quot;radioteste&quot; id=&quot;radioteste&quot; value=&quot;portas&quot;&gt;Portas&amp;nbsp; 
          &lt;input type=&quot;radio&quot; name=&quot;radioteste&quot; id=&quot;radioteste&quot; value=&quot;fluxos&quot; &gt;Fluxos&lt;br&gt;&lt;br&gt;
          &lt;input type=&quot;file&quot; name=&quot;filename&quot; validar=&quot;texto&quot; nome=&quot;Arquivo&quot; size=&quot;50&quot; /&gt;
          &lt;br&gt; 
          &lt;INPUT TYPE=&quot;SUBMIT&quot; name=&quot;Enviar&quot; value=&quot;Enviar&quot;&gt; 
           
      &lt;/form&gt;     
    &lt;/body&gt; 
&lt;/html&gt;  

eu nao tinha uma web-inf com a pasta lib dentro…coloquei depois de vc ter falado…mas como o programa sabe onde procurar a lib!!!

ta dando erro na linha onde vc declara o mpr

valeu abraços!!!

você colocou o arquivo cos.jar dentro da pasta lib

aham!

MMathias,

Acho que antes de você iniciar uma aplicação web em java primeiro você tem que entender como funciona a estrutura de diretórios e o que deve conter cada diretório. abaixo segue dois link’s que explicam como funciona

http://www.javafree.org/javabb/viewtopic.jbb?t=1407
http://www.linhadecodigo.com.br/artigos.asp?id_ac=765

Siga esta estrutura de diretórios para todas as suas aplicações web.
PS: WEB-INF é maiúscula e necessita ter o arquivo web.xml dentro dela

Acabei de ler!!!
Só que a utilizacao do xml é só pra quando eu tiver uma servlet né?!?!
pq ele é configurado para chamar a servlet passando parametros senao me engano!
mas eu nao tenho uma servlet…
eu tava querendo fazer tudo atraves de jsp…
é possivel??
a minha estrutura ta certa…

pastas_auxiliares/

arquivos.jsp

WEB-INF/
-----/lib

Como nao tenho .class nem .java nao tem necessidade criar outras pastas
ne?

Valeuuu