terça-feira, 23 de agosto de 2011

Dicas de Programação: Upload de arquivo com DWR

DWR é um framework Java que simula chamadas de métodos Java em Javascript.

Legal, não? :)

Aqui, vou mostrar um exemplo de upload de uma imagem...

Primeiro, a gente cria a classe que vai fazer o upload:

package com.blogspot.blogdotakemura.test;

import java.awt.image.BufferedImage;
import java.io.File;
import javax.imageio.ImageIO;

public class UploadFile {

public String uploadImage(BufferedImage image) {
try {
File file = new File("teste.png");
ImageIO.write(image, "png", file);
return file.toURI().toString();
} catch (Exception e) {
e.printStackTrace();
return "";
}
}

}

Depois, crio o arquivo dwr.xml em WEB-INF e adiciono as seguintes linhas:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE dwr PUBLIC "-//GetAhead Limited//DTD Direct Web Remoting 3.0//EN" "http://getahead.org/dwr/dwr30.dtd">

<dwr>
<allow>
<!-- file upload -->
<create creator="new">
<param name="class" value="com.blogspot.blogdotakemura.test.UploadFile"/>
</create>
</allow>
</dwr>

Agora, é só criar a página JSP:

<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<script type='text/javascript' src='/DWRTest/dwr/engine.js'></script>
<script type='text/javascript' src='/DWRTest/dwr/util.js'></script>
<script type='text/javascript' src='/DWRTest/dwr/interface/UploadFile.js'></script>
<title>Upload test</title>
<script>

function uploadFile() {
var imageData = dwr.util.getValue("imageUpload");
UploadFile.uploadImage(imageData, function(data) {
alert(data);
});
}

</script>
</head>
<body>
<form method="post" enctype="multipart/form-data">
<input type="file" name="imageUpload" id="imageUpload"/>
<input type="button" value="Send" onclick="uploadFile();"/>
</form>
</body>
</html>

Se tudo der certo, agora você pode fazer upload de imagens com javascript!!!!

Uau! :P

Obs.: Para que isso funcione, é preciso configurar o dwr corretamente na aplicação web.

Nenhum comentário: