dark123
Fevereiro 13, 2009, 4:37am
#1
Oi.
Estou com um problema com um upload em uma página que cria diretórios e
seta seu nome no banco de dados e em um parâmetro para outra página que
enviará as imagens para lá.
Eu não consigo pegar o parâmetro “nome do diretório” e setar na url para enviar as imagens.
Sempre returna null.
Vejam:
[code]<%@ page import=“org.apache.commons.fileupload.FileItem” %>
<%@ page import=“org.apache.commons.fileupload.servlet.ServletFileUpload” %>
<%@ page import=“org.apache.commons.fileupload.disk.DiskFileItemFactory” %>
<%@ page import=“java.util.List” %>
<%@ page import=“java.util.Iterator” %>
<%@ page import=“java.io.File” %>
<%
out.println("");
if (ServletFileUpload.isMultipartContent(request))
{
out.println(“Upload result: “);
ServletFileUpload servletFileUpload = new ServletFileUpload(new DiskFileItemFactory());
// String uploadDir = application.getRealPath(request.getServletPath());
// File uploadDir = new File(application.getRealPath(”/”) + “/upload/galerias/42”); //).getParent();
try {
List fileItemsList = servletFileUpload.parseRequest(request);
Iterator it = fileItemsList.iterator();
while (it.hasNext())
{
FileItem fileItem = (FileItem)it.next();
if (fileItem.isFormField())
{
String idgaleria = request.getParameter("idgal");
out.println(fileItem.getFieldName()+" - "+fileItem.getString()+"<br>");
}
else
{
fileItem.write(new File(application.getRealPath("/") +
"/upload/galerias/"+idgaleria+"/"+(new File(fileItem.getName()).getName())));
out.println("File <img src='galerias/42/"+(new File(fileItem.getName()).getName())+"' /> was sucessfully saved on server.<br><br>");
}
}
}
catch (Exception ex) {
out.println(ex.getMessage());
}
}
else
out.println(“No Files send.”);
out.println("");
%>[/code]
Tem que ser JSP mesmo, pois estou utilizando includes.
Agradeço uma ajudinha.
[]s
vc ja conseguiu fazer algum upload?
eu uso assim
String dir = application.getRealPath("arquivos");
String fullDir = dir + "/" + filename;
funciona aqui sem problema! se não estiver conseguindo posta denovo
dark123
Fevereiro 13, 2009, 12:10pm
#4
Sim, o upload eu consigo sim, só que não para o diretório pêgo por parâmetro.
Imagine este seu próprio exemplo, acrescente isto:
String subdir = request.getParameter("imagem");
String dir = application.getRealPath("arquivos");
String fullDir = dir + "/" +subdir+ "/"+ filename;
É isto que estou tentando fazer, entende?!
Só que retorna null no nome do subdiretório, pois acho que não está capturando o parâmetro.
A pergunta é: Em qual parte do código devo capturar o parâmetro então?
obrigado.
dark123
Fevereiro 13, 2009, 9:31pm
#5
Agora consegui pegar o parâmetro do nome do subdiretório que é para onde a imagem vai, só que mostra mensagem de acesso negado.
index.jsp
<div align=right>
<form action="upload.jsp" method="post" enctype="multipart/form-data">
<% try {
pstmt = conn.prepareStatement("SELECT titgaleria FROM galeriasapae WHERE idgaleria = ?");
pstmt.setObject(1, sid);
rs = pstmt.executeQuery();
rs.next(); %>
<input type="hidden" name="pasta" value="<%=rs.getString("titgaleria")%>">
<input type="file">
<br><input type="file">
<br><input type="file">
<br><input type="file">
<br><input type="file">
<br><input type="file">
<p><input type="submit" value="enviar">
<% rs.close(); } catch (SQLException sqlex) { out.println("Erro encontrado"); } %>
</form>
</div>
upload.jsp
[code]<%@ page import=“org.apache.commons.fileupload.FileItem” %>
<%@ page import=“org.apache.commons.fileupload.servlet.ServletFileUpload” %>
<%@ page import=“org.apache.commons.fileupload.disk.DiskFileItemFactory” %>
<%@ page import=“java.util.List” %>
<%@ page import=“java.util.Iterator” %>
<%@ page import=“java.io.File” %>
<%
out.println("");
if (ServletFileUpload.isMultipartContent(request))
{
String idgaleria = request.getParameter(“pasta”);
out.println("Upload result: <br>");
ServletFileUpload servletFileUpload = new ServletFileUpload(new DiskFileItemFactory());
// String uploadDir = application.getRealPath(request.getServletPath());
// File uploadDir = new File(application.getRealPath("/") + “/upload/galerias/42”); //).getParent();
try {
List fileItemsList = servletFileUpload.parseRequest(request);
Iterator it = fileItemsList.iterator();
while (it.hasNext())
{
FileItem fileItem = (FileItem)it.next();
if (!fileItem.isFormField())
{
// String idgaleria = request.getParameter("pasta");
// String nome = (new File(fileItem.getName()).getName());
// String valor = fileItem.getString();
}
else
{
fileItem.write(new File(application.getRealPath("/") + "/upload/galerias/" +fileItem.getString()));
}
}
}
catch (Exception ex) {
out.println(ex.getMessage());
}
}
else
out.println(“No Files send.”);
out.println("");
%>[/code]
Visualização:
O subdiretório retornado por parâmetro é “paixões”, então não sei o porque de acesso negado :shock:
dark123
Fevereiro 14, 2009, 3:11pm
#6
Era só adicionar um atributo name=“form” na tag form e resolveria.
Resolvido!
[]s
Pacato
Setembro 14, 2012, 10:44am
#7
Cara to com um problema semelhante…
Você poderia me dar uma ajuda?
Estou tentando fazer um upload de um arquivo e pegar o caminho dele (ou seja, o arquivo) para adicionar no BD
tento usar o request.getRealPath só que vem o endereço do servidor junto (ele estátrazendo o caminho do meu arquivo jsp (C:\Desktop\apache-tomcat\wtpwebapps\Cards\arquivo)
E não o caminho que está o arquivo
jsp:
[code]<%@ page language=“java” contentType=“text/html; charset=utf-8”
pageEncoding=“utf-8”%>
upload
Upload:
<input type="submit" name="enviar" value="Enviar" />
</form>
</body>
[/code]
a classe está no tópico http://www.guj.com.br/java/282238-fazer-upload-de-arq-excel-com-jsp-e-receber-na-classe-para-enviar-ao-bd