Apache FileUpload

4 respostas
R

Por acaso alguém conseguiu azer funcionar uma página de upload com a classe do Apache?

Eu baixei aqui, coloquei no meu site e tentei usar. Ele não dá erro nenhum, mas o arquivo fica vazio.

Não sei direito como gravar o conteúdo no arquivo, pois a documentação pra mim é obscura.

O pedaço de código que coloquei pra testar está assim:

DiskFileUpload fu = new DiskFileUpload();
fu.setSizeMax(1000000);
fu.setSizeThreshold(4096);
fu.setRepositoryPath("/tmp");
List fileItems = fu.parseRequest(request);
Iterator i = fileItems.iterator();
FileItem fi = (FileItem)i.next();
File arquivo = new File(scapath+"/file.gif");
fi.write(arquivo);

4 Respostas

D

cara… blz?
eu ja fiz a façanha de fazer funcionar o FileUpload… eu vo procurar aki o código e posto qdo achar!

flw!

D

falae cara!

como prometi, tomae o código…
ta beeeeeeemmmm feio esse código, ele nem grava o arquivo com o nome certo e mto menos a extensão… mas eu tinha conseguido fazer ele gravar ele com o nome e extensão perfeita…

da uma olhada, pelo menos a “engine” dele ta aí…

<%@ page import="java.io.*" %>
<%@ page import="java.util.*" %>
<%@ page import="org.apache.commons.fileupload.*" %>

<%
try {
DiskFileUpload fu = new DiskFileUpload();

List fileItems = fu.parseRequest(request);

Iterator i = fileItems.iterator();

FileItem fi = (FileItem)i.next();

InputStream in = fi.getInputStream();

File file = new File("C:/teste");

FileOutputStream fos = new FileOutputStream(file);

int c;
while((c = in.read()) != -1)
fos.write(c);

fos.close();
out.println("arquivo salvo");
}
catch(Exception e) {
out.println(e.toString());
}
%>

boa sorte com o FileUpload q é trash usar ele!
se eu achar a versão perfeita dele, eu posto aki de novo!

flw!

M

se não me engano tem um exemplo de upload nos docs do Tomcat… ou nos exemplos que vem com o Struts, não to lembrado… mas tem… hehehe :slight_smile:

J

Ai…segue um exemplo de uma JSP Upload
Mas tenho dois problemas com ela:

  1. eh q nao salva o nome completo e nem no formato original, somente .txt;
  2. nao consigo colocar em um diretorio da minha aplicacao, tento colocar na String savePath = “//diretorio//”; e nao funciona, mas funciona como tah no exemplo.

segue codigo fonte:

<%@ page import=“java.io.*” %>
<%

String savePath = "C://diretorio//";
String filename = request.getParameter("arquivo");

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=\""))
	{
		String s = new String(line, 0, i-2);
		
		int pos = s.indexOf("filename=\"");
		if (pos != -1)
		{
			String filepath = s.substring(pos+10, s.length()-1);
			
			pos = filepath.lastIndexOf("\\");
			
			if (pos != -1)
			{
				filename = filepath.substring(pos + 1);
			}
			else
			{
				filename = 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 &amp;&amp; !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 + filename, "rw");
			
			byte[] bytes = buffer.toByteArray();
			f.write(bytes, 0, bytes.length - 2);
			f.close();
		}
		catch (Exception e) {}
	}
	
	i = in.readLine(line, 0, 128);
}

%>

Criado 5 de julho de 2004
Ultima resposta 6 de jul. de 2004
Respostas 4
Participantes 4