Preciso de ajuda nesse código:
Obs: Eu entro com os dados na página addmonografia.jsp, que envia os dados para a página processaaddmonografia.jsp. E esta utiliza a classe UploadPdf.java para concretizar o upload.
//Página addmonografia.jsp
<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<jsp:useBean id="sessao" scope="session" class="java.lang.String" />
<%@ page import="java.sql.*, conexao.*, java.util.*, cabecalho.*, security.*, uploadPdf.*" %>
<%
boolean flag = false;
//Recebe o nome do arquivo que será carregado
String impressao = "<p style='color:#FF0000'>Não foi carregado nenhum arquivo, clique <a href='addarqmonografia.jsp'>aqui</a> para carregar</p>";
String nomeArq = null;
String extensao = "";
if (request.getParameter("arq") != null) {
flag = true;
extensao = ".pdf";
impressao = request.getParameter("arq");
nomeArq = impressao + extensao;
}
//Verifica se o usuário está logado
String login = sessao;
Autenticacao autenticacao = new Autenticacao();
if (!autenticacao.verificaUsuario(login)) { // se não estiver logado, redireciona-o para a página de login
if (flag) {
response.sendRedirect(autenticacao.endereco + "addmonografia?arq=" + impressao);
} else {
response.sendRedirect(autenticacao.endereco + "addmonografia");
}
}
impressao = impressao + extensao;
//Carrega o cabeçalho
Cabecalho cab = new Cabecalho();
%>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>:: CACC - Centro Acadêmico da Ciência da Computação ::</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<script language="JavaScript" type="text/JavaScript">
function validaarquivo(campo){
TamanhoString = campo.length;
extensao = campo.substr(TamanhoString - 4,TamanhoString);
if (TamanhoString == 0){
alert('Você precisa selecionar um arquivo antes de transmitir.');
return false;
}else{
var ext = new Array('.pdf');//adicione as extensões desejadas
for(var i = 0; i < ext.length; i++){
if (extensao == ext[i]){
flag = "ok";
break;
}else{
flag = "erro";
}
}
if (flag=="erro"){
alert("Tipo de arquivo inválido.\nCarregue um arquivo com extensão PDF");
document.fr_addMonografia.url_mono.value="";
return false;
}
}
//caminhourl = "processauploadmonografia.jsp";
//document.forms[0].action = caminhourl;
//window.document.forms[0].submit();
return true;
}
</script>
</head>
<body>
<%= cab.cabecalhoDiv %>
<table align="center" width="100%" border="0" cellspacing="0" cellpadding="0">
<%= cab.cabecalhoB %>
<tr id="corpo">
<td>
<table width="100%" border="5" cellpadding="20" cellspacing="0" bordercolor="#000000">
<tr>
<td align="left" valign="top"><h1>Incluir Monografia</h1>
<p> </p>
<form action="processaaddmonografia.jsp" method="post" name="fr_addMonografia" id="fr_addMonografia" onsubmit="MM_validateForm('autor_mono','','R','curso_mono','','R','tema_mono','','R','orientador_mono','','R','componente1_banca','','R','presidente_banca','','R','data_defesa_mono','','R','url_mono','','R');return document.MM_returnValue">
<table width="500" border="0" cellspacing="1" cellpadding="4">
<tr>
<td width="142" nowrap="NOWRAP">Arquivo:
</td>
<td colspan="3" nowrap="NOWRAP">
<input type="file" name="url_mono" id="url_mono" onchange="return validaarquivo(fr_addMonografia.url_mono.value)" />
</td>
</tr>
<tr>
<td width="142" nowrap="NOWRAP">Autor:</td>
<td colspan="3" nowrap="NOWRAP">
<input name="autor" type="text" id="autor" size="50" maxlength="80" />
<%-- if(request.getParameter("falta").equals("autor")) --%>
<p style='color:#FF0000'><small>*Preencha o campo autor</small></p>
</td>
</tr>
<tr>
<td width="142" nowrap="NOWRAP">Curso:</td>
<td colspan="3"><input name="curso" type="text" id="curso" size="50" maxlength="60" /></td>
</tr>
<tr>
<td width="142" nowrap="NOWRAP">Tema:</td>
<td colspan="3"><input name="tema" type="text" id="tema" size="50" maxlength="100" /></td>
</tr>
<tr>
<td width="142" nowrap="NOWRAP">Delimitação do tema:</td>
<td colspan="3"><input name="delimitacao_tema" type="text" id="delimitacao_tema" size="50" maxlength="100" />
</td>
</tr>
<tr>
<td width="142" nowrap="NOWRAP">Orientador:</td>
<td colspan="3"><input name="orientador" type="text" id="orientador" size="50" maxlength="80" /></td>
</tr>
<tr>
<td width="142" nowrap="NOWRAP">Componente da Banca:</td>
<td colspan="3"><input name="componente1_banca" type="text" id="componente1_banca" size="50" maxlength="80" /></td>
</tr>
<tr>
<td width="142" nowrap="NOWRAP">Componente da Banca:</td>
<td colspan="3"><input name="componente2_banca" type="text" id="componente2_banca" size="50" maxlength="80" /></td>
</tr>
<tr>
<td width="142" nowrap="NOWRAP">Componente da Banca:</td>
<td colspan="3"><input name="componente3_banca" type="text" id="componente3_banca" size="50" maxlength="80" /></td>
</tr>
<tr>
<td width="142" nowrap="NOWRAP">Presidente da Banca:</td>
<td colspan="3"><input name="presidente_banca" type="text" id="presidente_banca" size="50" maxlength="80" /></td>
</tr>
<tr>
<td width="142" nowrap="NOWRAP">Data da defesa:</td>
<td colspan="3"><input name="data_defesa" type="text" id="data_defesa" size="50" maxlength="10" /></td>
</tr>
<tr>
<td width="142" nowrap="NOWRAP">
<input name="userc" type="hidden" id="userc" value="<%= login %>" />
</td>
<td width="80">
<input type="submit" name="Submit" value="Salvar" />
</td>
<td width="251" colspan="2">
<div align="left">
<input type="reset" name="Submit2" value="Limpar" />
</div>
</td>
</tr>
</table>
</form>
</td>
</tr>
</table>
</td>
</tr>
<tr>
<td> </td>
</table>
</body>
</html>
//Página: processaaddmonografia.jsp
<%@page import="org.apache.tomcat.util.http.fileupload.FileItem"%>
<%@page import="org.apache.tomcat.util.http.fileupload.FileUpload"%>
<%@page import="org.apache.tomcat.util.http.fileupload.DiskFileUpload"%>
<%@page import="java.io.*, java.util.*, org.apache.commons.fileupload.*"%>
<%@page import="conexao.*, java.sql.*, uploadPdf.*, uploadPdf.*" contentType="text/plain"%>
<%
String autor = (String) request.getParameter("autor");
String curso = (String) request.getParameter("curso");
String tema = (String) request.getParameter("tema");
String delimitacao_tema = (String) request.getParameter("delimitacao_tema");
String orientador = (String) request.getParameter("orientador");
String componente1_banca = (String) request.getParameter("componente1_banca");
String componente2_banca = (String) request.getParameter("componente2_banca");
String componente3_banca = (String) request.getParameter("componente3_banca");
String presidente_banca = (String) request.getParameter("presidente_banca");
String data_defesa = (String) request.getParameter("data_defesa");
String url_mono;
String userc = (String) request.getParameter("userc");
if (autor != null && curso != null && tema != null && orientador != null &&
componente1_banca != null && presidente_banca != null && data_defesa != null) {
Class.forName("org.firebirdsql.jdbc.FBDriver");
Connection con = DriverManager.getConnection("jdbc:firebirdsql://localhost:3050/E:\\Documentos\\CACC\\web\\BANCO.FDB", "SYSDBA", "masterkey");
Statement st = null;
st = con.createStatement();
String sql;
sql = "INSERT INTO MONOGRAFIA(AUTOR, CURSO, TEMA, DELIMITACAO_TEMA, ORIENTADOR, COMPONENTE1_BANCA, COMPONENTE2_BANCA, COMPONENTE3_BANCA, PRESIDENTE_BANCA, DATA_DEFESA, URL_MONO, USERC, USERA) VALUES('" + autor + "', '" + curso + "', '" + tema + "', '" + delimitacao_tema + "', '" + orientador + "', '" + componente1_banca + "', '" + componente2_banca + "', '" + componente3_banca + "', '" + presidente_banca + "', '" + data_defesa + "', '', '" + userc + "', '" + userc + "')";
int cont = st.executeUpdate(sql);
con.close();
//st.close();
Conexao con2 = new Conexao();
ResultSet rs = con2.executarSQL("SELECT FIRST 1 COD_MONO FROM MONOGRAFIA ORDER BY COD_MONO DESC");
int aux2 = 123456;
while (rs.next()) {
aux2 = rs.getInt(1);
}
url_mono = "monografia_" + String.valueOf(aux2);
con2.fecharConexao();
Class.forName("org.firebirdsql.jdbc.FBDriver");
Connection con3 = DriverManager.getConnection("jdbc:firebirdsql://localhost:3050/E:\\Documentos\\CACC\\web\\BANCO.FDB", "SYSDBA", "masterkey");
Statement st2 = con3.createStatement();
sql = "UPDATE MONOGRAFIA SET URL_MONO = '" + url_mono + "' WHERE COD_MONO = " + aux2;
aux2 = st2.executeUpdate(sql);
con3.close();
UploadPdf upArq = new UploadPdf();
boolean isMultipart = FileUpload.isMultipartContent(request);
DiskFileUpload uploadArq = new DiskFileUpload();
uploadArq.setSizeMax(50 * 1024 * 1024); //define o tamanho máximo do arquivo para upload = 50Mb
List itens = uploadArq.parseRequest(request);
Iterator it = itens.iterator(); // interação com os itens do upload
UploadPdf up = new UploadPdf();
up.uploadFilePdf(isMultipart, it);
upArq.renomeiaArq(url_mono, "monografia");
response.sendRedirect("monografias.jsp?status=sucesso");
}
%>
//Classe UploadPdf.java
package uploadPdf;
import org.apache.tomcat.util.http.fileupload.FileItem;
import java.io.*;
import java.util.*;
import org.apache.commons.fileupload.*;
import conexao.*;
import java.sql.*;
import javax.servlet.http.*;
public class UploadPdf {
private boolean erro;
private String nomeArq;
public String nomeSemExtensao;
public UploadPdf() {
setErro(false);
}
public void setErro(boolean erro) {
this.erro = erro;
}
public boolean getErro() {
return erro;
}
public String getNomeArq() {
return nomeArq;
}
public void setNomeArq(String nomeArq) {
this.nomeArq = nomeArq;
}
public boolean uploadFilePdf(boolean isMultipart, Iterator it) throws Exception {
if (isMultipart) {
while (it.hasNext()) {
FileItem fItem = (FileItem) it.next();
setNomeArq(fItem.getName()); // obtem o nome original do arquivo
if ((getNomeArq() != null) && (!getNomeArq().equals("")) && (!getNomeArq().equals(" "))) {
if (separaNomeEExtensao()) {
StringBuffer sb = new StringBuffer();
sb.append("/Documentos/CACC/web/arqs/"); // define o diretório p/ gravar o arq
sb.append("monografia.pdf"); // armazena o nome do arq para gravação
//sb.append(getNomeArq());
//Cria, lê, converter o arquivo para String pois ele vem em bytes e grava o arquivo no servidor. Ex: /teste.txt
File uploadedFile = new File(sb.toString());
fItem.write(uploadedFile);
} else {
setErro(true);
}
} else {
if (getNomeArq() != null) {
setErro(true);
}
}
}
}
return getErro();
}
private boolean separaNomeEExtensao() {
boolean flag;
int tamNome = getNomeArq().length();
String extensaoArq = getNomeArq().substring(tamNome - 4, tamNome);
nomeSemExtensao = getNomeArq().substring(0, tamNome - 4);
if (extensaoArq.equals(".pdf")) {
flag = true;
} else {
flag = false;
}
return flag;
}
public void renomeiaArq(String novoNome, String tipo) {
File nomeAntigo = new File("/Documentos/CACC/web/arqs/"+tipo+".pdf");
File nomeNovo = new File("/Documentos/CACC/web/arqs/"+novoNome+".pdf");
nomeAntigo.renameTo(nomeNovo);
}
}
Que dá o seguinte erro:
type Exception report
message
description The server encountered an internal error () that prevented it from fulfilling this request.
exception
org.apache.jasper.JasperException: An exception occurred processing JSP page /processaaddmonografia.jsp at line 53
50: boolean isMultipart = FileUpload.isMultipartContent(request);
51: DiskFileUpload uploadArq = new DiskFileUpload();
52: uploadArq.setSizeMax(50 * 1024 * 1024); //define o tamanho máximo do arquivo para upload = 50Mb
53: List itens = uploadArq.parseRequest(request);
54: Iterator it = itens.iterator(); // interação com os itens do upload
55: UploadPdf up = new UploadPdf();
56: up.uploadFilePdf(isMultipart, it);
Stacktrace:
org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:524)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:417)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:320)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:266)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
root cause
javax.servlet.ServletException: org.apache.tomcat.util.http.fileupload.FileUploadBase$InvalidContentTypeException: the request doesn't contain a multipart/form-data or multipart/mixed stream, content type header is application/x-www-form-urlencoded
org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:850)
org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:779)
org.apache.jsp.processaaddmonografia_jsp._jspService(processaaddmonografia_jsp.java:131)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:393)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:320)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:266)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
root cause
org.apache.tomcat.util.http.fileupload.FileUploadBase$InvalidContentTypeException: the request doesn't contain a multipart/form-data or multipart/mixed stream, content type header is application/x-www-form-urlencoded
org.apache.tomcat.util.http.fileupload.FileUploadBase.parseRequest(FileUploadBase.java:255)
org.apache.jsp.processaaddmonografia_jsp._jspService(processaaddmonografia_jsp.java:115)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:393)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:320)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:266)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
note The full stack trace of the root cause is available in the Apache Tomcat/6.0.14 logs.
Alguém sabe pq :?: