Ir para conteúdo
Fórum CódigoFonte.net
Entre para seguir isso  
Dark Shadow

Upload de vários arquivos criando diretório

Recommended Posts

Olá a todos.

Sou novo aqui e já venho com um probleminha em JSP com uploads.

Tento pegar o nome do diretório (que é a data) de dentro de uma consulta do banco de dados mas dá operação ilegal.

Faço isso, pois uma página anterior à essa que trata a imagem é preenchida antes e depois é tratada e insere dados, os quais são retornados nesta página.

Enfim, tento enviar a imagem para o diretório que seu nome lógico foi criado no banco.

<%@page language="java" import="schema.Conexao"%>
<%@page contentType="text/html" pageEncoding="iso-8859-1"%>
<%@ page import="java.io.*"%>
<%@ page import="java.util.*"%>
<%@page import="java.sql.*"%>

<%

 String diretorio = request.getParameter("ok");

   try {

         String contentType = request.getContentType();

         Connection conn = new Conexao().getConection();

         String query =
         "SELECT date_format(EndDiretorio, '%d-%m-%Y_%H-%i-%s') as data FROM tableTopic WHERE codDiretorio = ? ";
         PreparedStatement pstmt = conn.prepareStatement(query);
         pstmt.setObject(1, diretorio);

         ResultSet rs = pstmt.executeQuery();
         rs.next();

         out.println(rs.getString("data"));

         // Evite criar instâncias de File utilizando "/" ou "\\" procure fazer assim:
         File dir = new File(application.getRealPath("/") + "eventos/");
              dir = new File(dir, rs.getString("data"));
              dir = new File(dir, "logo");

         // utilize o mkdirs para criar a estrutura de diretórios completa
         if (dir.mkdir()) {
            if ((contentType != null) && (contentType.indexOf("multipart/form-data") >= 0)) {
               InputStream in = request.getInputStream();

               int formDataLength = request.getContentLength();
               byte dataBytes[] = new byte[formDataLength];
               int byteRead = 0;
               int totalBytesRead = 0;
               while (totalBytesRead < formDataLength) {
                  byteRead = in.read(dataBytes, totalBytesRead, formDataLength);
                  totalBytesRead += byteRead;
               }

               String file = new String(dataBytes);
               String saveFile = file.substring(file.indexOf("filename=\"") + 10);
               saveFile = saveFile.substring(0, saveFile.indexOf("\n"));
               saveFile = saveFile.substring(saveFile.lastIndexOf("\\") + 1, saveFile.indexOf("\""));

               int lastIndex = contentType.lastIndexOf("=");
               String boundary = contentType.substring(lastIndex + 1, contentType.length());

               int pos;
               pos = file.indexOf("filename=\"");
               pos = file.indexOf("\n", pos) + 1;
               pos = file.indexOf("\n", pos) + 1;
               pos = file.indexOf("\n", pos) + 1;

               int boundaryLocation = file.indexOf(boundary, pos) - 4;
               int startPos = ((file.substring(0, pos)).getBytes()).length;
               int endPos = ((file.substring(0, boundaryLocation)).getBytes()).length;

               String filepath = dir + "/" + saveFile;

               FileOutputStream fileOut = new FileOutputStream(filepath);
               fileOut.write(dataBytes, startPos, (endPos - startPos));
               fileOut.flush();
               fileOut.close();

               out.println("diretório criado e imagens enviadas para<br>" + filepath);

             //  out.println("<img src=\"eventos/" +filePath+ "\" / >");

            } else {
               out.println("erro ao enviar imagens para o diretório!");
            }
         } else {
            out.println("erro ao criar diretório!");
         }
      } catch (SQLException sqlex) {
         out.println("Não foi possível criar o evento<br>" + sqlex);
      }

 %>

Excessão: Não foi possível criar o evento

java.sql.SQLException: Illegal operation on empty result set.

Isso acontece justo no momento de pegar o nome do diretório... =/

Alguma ajudinha ?

[]s

Compartilhar este post


Link para o post
Compartilhar em outros sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Visitante
Responder

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Processando...
Entre para seguir isso  

×
×
  • Criar Novo...