Oi pessoas.
Recentemente programei um sistema de upload em que se pegassem dados do usuário junto com o upload.
Todos sabemos que o submit de campos file é criptografado, então temos q fazer um teste com if e else pra pegar os parâmetros.
Só que fiz isso com sessões, e quando fiz um teste errado (foi teste) a sessão não morreu, pois o tratamento parou na metade e a sessão morria no fim do tratamento.
Então tentei setar com variáveis count1=0, count2=0, ect e depois setar count1=1, etc,,... (não deu certo)
Fiz o sistema mostrar se pegava os campos assim que mudei o modo de tratamento do upload e retornava null em todos .
Por favor, gostaria de uma orientação:
<%
Connection conn = Conexao.getConexao();
PreparedStatement pstmt = null;
String caminho="";
String proprietario="";
String endereco="";
String cpf="";
String telefone="";
int count1=0, count2=0, count3=0, count4=0, count5=0;
boolean isMultipart = ServletFileUpload.isMultipartContent(request);
// String contentType = request.getContentType();
// if ((contentType != null) && (contentType.indexOf("multipart/form-data") >= 0)) {
if (!isMultipart) {
out.println("Não foi possível enviar a requisição!");
} else {
FileItemFactory factory = new DiskFileItemFactory();
ServletFileUpload upload = new ServletFileUpload(factory);
upload.setSizeMax(1*1024*1024); //define o tamanho maximo do arquivo para upload 50Mb
//upload.setFileSizeMax(160); não sei usar isso mas gostaria de redimensionar antes de enviar,
//assim não ultrapassa o limite do tamanho e não bagunça o layout
List items = null;
try {
items = upload.parseRequest(request);
} catch (FileUploadException e) {
e.printStackTrace();
}
Iterator itr = items.iterator();
while (itr.hasNext())
{
FileItem item = (FileItem) itr.next();
if (item.isFormField())
{
String name = item.getFieldName();
String value = item.getString();
if(name.equals("caminho")) {
caminho=value;
count1=1;
}
if(name.equals("proprietario")) {
proprietario=value;
count2=1;
}
if(name.equals("endereco")) {
endereco=value;
count3=1;
}
if(name.equals("cpf")) {
cpf=value;
count4=1;
}
if(name.equals("telefone")) {
telefone=value;
count5=1;
}
} else {
try {
String itemName = item.getName();
String valor = item.getFieldName();
//***************************************************************************************//
// Recuperando sessões, ou melhot, parametros para cadastrar os valores dos parametros no banco de dados, junto com o arquivo //
//**************************************************************************************//
if (count1==1 || count2==1 || count3==1 || count4==1 || count5==1) {
File savedFile = new File(application.getRealPath("/")+"/images/ads/publicidade/"+item);
item.write(savedFile);
try {
pstmt = conn.prepareStatement("INSERT INTO ads (arquivo, url, proprietario, endereco, cpf, telefone) "+
" VALUES (?, ?, ?, ?, ?, ?)");
pstmt.setObject(1, item);
pstmt.setObject(2, caminho);
pstmt.setObject(3, proprietario);
pstmt.setObject(4, endereco);
pstmt.setObject(5, cpf);
pstmt.setObject(6, telefone);
pstmt.execute();
session.setAttribute("uploadOK", "Arquivo enviado com sucesso!");
response.sendRedirect("welcome.do");
//out.println("enviado!");
} catch (SQLException sqlex) {
//out.println("ERRO 2: Não foi possível redirecionar...<p>");
//out.println(sqlex);
session.setAttribute("uploadOK", "Não foi possível cadastrar o arquivo!");
response.sendRedirect("welcome.do");
}
} else {
session.setAttribute("uploadOK", "Problemas para enviar o arquivo!");
response.sendRedirect("welcome.do");
}
} catch (Exception e) {
// e.printStackTrace();
// out.println(e);
out.println("<h3>Erro ao tentar enviar arquivo!</h3>");
}
}
}
}
%>
Este é o source, por favor, não me xinguém . kk Assim q eu resolver isso, crio servlets para reusar o código. (prometo)
Tanks.