Friday, March 2, 2012

Upload File

Hello everybody!

Following are some examples found right here in the discussion group
took two classes below.

In my class I have ArquivoUpload umTextBox a form with a ListBox and a
FileUpload. In class FileUploadServlet're getting only the data from
the FileUpload. Could someone help me also take the data from the
TextBox?
In debug mode I see everything that is in the form of the request but
I can not extract the values​​.

public class ArquivoUpload implements EntryPoint {

public static final String UPLOAD_ACTION_URL = GWT.getModuleBaseURL()
+ "upload";

@Override
public void onModuleLoad() {

// Cria um FormPanel e apontá-lo para um serviço.
final FormPanel form = new FormPanel();
form.setAction(UPLOAD_ACTION_URL);

// Porque nós vamos adicionar um widget FileUpload, vamos precisar
para
// definir o
// Form usar o método POST, e codificação MIME multipart.
form.setEncoding(FormPanel.ENCODING_MULTIPART);
form.setMethod(FormPanel.METHOD_POST);

// Cria um painel para conter todos os elementos do formulário.
VerticalPanel panel = new VerticalPanel();
form.setWidget(panel);

// Criar um TextBox, dando-lhe um nome para que ele será submetido.
final TextBox tb = new TextBox();
tb.setName("TextBoxFormElement");
panel.add(tb);

// Criar um ListBox, dando-lhe um nome e alguns valores que devem
ser
// associados
// Com suas opções.
ListBox lb = new ListBox();
lb.setName("listBoxFormElement");
lb.addItem("foo", "fooValue");
lb.addItem("bar", "barValue");
lb.addItem("baz", "bazValue");
panel.add(lb);

// Criar um widget FileUpload.
final FileUpload upload = new FileUpload();
upload.setName("uploadFormElement");
panel.add(upload);

panel.add(new UploadForm());

// Adicionar um botão 'Enviar'.
panel.add(new Button("Submit", new ClickHandler() {
public void onClick(ClickEvent event) {
form.submit();
}
}));

//Adicionar um manipulador de eventos para o formulário.
form.addSubmitHandler(new FormPanel.SubmitHandler() {

@Override
public void onSubmit(SubmitEvent event) {

if (upload.getFilename().equals("")) {
event.cancel();
return;
}

//Este evento é disparado pouco antes do formulário é submetido.
//Podemos aproveitar esta oportunidade para realizar a validação.
String filename= upload.getFilename();
int index = filename.lastIndexOf(".");
String ext = filename.substring(index + 1);
if (!(ext.equals("gif") || ext.equals("jpg") || ext.equals("GIF")
|| ext.equals("JPG"))){
Window.alert("Extensão de arquivo inválida. Por favor adicione
apenas arquivos com extensões .jpg ou .gif.");
event.cancel();
}
}
});

form.addSubmitCompleteHandler(new FormPanel.SubmitCompleteHandler()
{
@Override
public void onSubmitComplete(SubmitCompleteEvent event) {
///Quando o envio do formulário é concluída com êxito,
//este evento é acionado. Assumindo que o serviço retornou
//uma resposta do tipo text / html, podemos obter o texto
resultado aqui
//(consulte a documentação FormPanel para mais explicações).
Window.alert(event.getResults());
System.out.println(event.getResults());
}
});
RootPanel rootPanel = RootPanel.get();
rootPanel.add(form);
}
}

public class FileUploadServlet extends HttpServlet {

private static final String UPLOAD_DIRECTORIY = "C:\\uploaded\\";

@Override
protected void doGet(HttpServletRequest req, HttpServletResponse
resp)
throws ServletException, IOException {
super.doGet(req, resp);
}

@SuppressWarnings("unchecked")
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse
resp)
throws ServletException, IOException {

// processar apenas as solicitações de várias
if (ServletFileUpload.isMultipartContent(req)) {

// Criar uma fábrica de artigos baseados em disco de arquivos
FileItemFactory factory = new DiskFileItemFactory();

// Crie um manipulador de novo upload de arquivos
ServletFileUpload upload = new ServletFileUpload(factory);

// Analisar o pedido
try {

List<FileItem> items = upload.parseRequest(req);

for (FileItem item : items) {

// processo só upload de arquivo - descartar outros tipos de
// item do form
if (item.isFormField()) continue;

// pega o nome do arquivo
String fileName = item.getName();

// pega extensão do arquivo
int index = fileName.lastIndexOf(".");
String ext = fileName.substring(index + 1);
ext = "." + ext;
System.out.println(ext);

// obter apenas o nome do arquivo não o caminho todo
if (fileName != null) {
fileName = FilenameUtils.getName(fileName);
}

File uploadedFile = new File(UPLOAD_DIRECTORIY, fileName);
if (uploadedFile.createNewFile()) {
item.write(uploadedFile);
resp.setStatus(HttpServletResponse.SC_CREATED);
resp.getWriter().println("O arquivo foi criado com sucesso.");
resp.flushBuffer();
} else
throw new IOException(
"O arquivo já existe no repositório.");
}

} catch (Exception e) {
resp.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR,
"Ocorreu um erro ao criar o arquivo: " + e.getMessage());
}

} else {
resp.sendError(HttpServletResponse.SC_UNSUPPORTED_MEDIA_TYPE,
"Tipo de conteúdo pedido não é suportado pelo servlet.");
}
}
}


Thank you!

--
You received this message because you are subscribed to the Google Groups "Google Web Toolkit" group.
To post to this group, send email to google-web-toolkit@googlegroups.com.
To unsubscribe from this group, send email to google-web-toolkit+unsubscribe@googlegroups.com.
For more options, visit this group at http://groups.google.com/group/google-web-toolkit?hl=en.

No comments:

Post a Comment