Duvidas com UploadFile Jsp

0 respostas
C

Gelera,
Estou com algumas dúvidas em relação a salvar um arquivo selecionado em um diretório específico:
No meu note book quando rodo o servidor executando o código abaixo, ele salva o arquivo na pasta c:\upload e depois é recuperado para executar o restante do código, funciona blz!

O problema é que agora preciso migrar esse meu projeto para outro servidor, e ai que está o problema, pq quando passei o projeto para o servidor ele ao invés de buscar dentro da pasta c:upload, ele está indo para para outro diretório e me retornando o erro abaixo:

Erro:java.sql.SQLException: File 'C:\Documents and Settings\All Users\Application Data\MySQL\MySQL Server 5.5\Data\upload\Base-campanhas.csv' not found (Errcode: 2)

alguém poderia me dar uma breve explicação de como fazer isso? ao invés do c: preciso colocar um caminho em comun na rede?

Segue o servlet que estou usando:

package Controlador;

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.PrintWriter;
import java.util.logging.Level;
import java.util.logging.Logger;



import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.fileupload.FileItemFactory;
import org.apache.commons.fileupload.FileUploadException;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;
import java.util.*;
//import javax.enterprise.deploy.spi.status.ProgressEvent;

import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.ProgressListener;
import sun.net.ProgressEvent;

/**
 *
 * @author Belchior
 */
@WebServlet(name = "UploadFile", urlPatterns = {"/UploadFile"})
public class UploadFile extends HttpServlet {
    private long yourMaxRequestSize;
      
           String path = "c:\\upload";
              private ProgressListener progressListener = new ProgressListener() {

                private long megaBytes = -1;

                public void update(long pBytesRead, long pContentLength, int pItems) {
                    long mBytes = pBytesRead / 1000000;
                   
                    if (megaBytes == mBytes) {
                        return;
                    }
                    megaBytes = mBytes;
                    System.out.println("We are currently reading item " + pItems);
                    if (pContentLength == -1) {
                        System.out.println("So far, " + pBytesRead + " bytes have been read.");
                    } else {
                        System.out.println("So far, " + pBytesRead + " of " + pContentLength
                                + " bytes have been read.");
                        
                    }
                }

                public void handleProgressEvent(ProgressEvent event) {
                    throw new UnsupportedOperationException("Not supported yet.");
                }
            };
    /** 
     * Processes requests for both HTTP <code>GET</code> and <code>POST</code> methods.
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    protected void processRequest(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException, FileUploadException {
        response.setContentType("text/html;charset=UTF-8");
        PrintWriter out = response.getWriter();
        try {

            boolean isMultipart = ServletFileUpload.isMultipartContent(request);
            int yourMaxMemorySize = 100 * (1024*1000); // 25 megas
            yourMaxRequestSize = yourMaxMemorySize;
            
            File yourTempDirectory = null;
            yourTempDirectory = new File(path);
// Create a factory for disk-based file items
    //        FileItemFactory factory = new DiskFileItemFactory();

// Create a new file upload handler
   //         ServletFileUpload upload = new ServletFileUpload(factory);

// Parse the request
  //          List /* FileItem */ items = upload.parseRequest(request);

// Create a factory for disk-based file items
            DiskFileItemFactory factoryDisk = new DiskFileItemFactory();

// Set factory constraints
            factoryDisk.setSizeThreshold(yourMaxMemorySize);
            factoryDisk.setRepository(yourTempDirectory);
            
            out.println("Repositorio..");

// Create a new file upload handler
            ServletFileUpload upload = new ServletFileUpload(factoryDisk);
            upload.setProgressListener(progressListener);

// Set overall request size constraint
            upload.setSizeMax(yourMaxRequestSize);

// Parse the request
            List /* FileItem */ items = upload.parseRequest(request);
            
            out.println("upload parse Request");

// Process the uploaded items
            Iterator iter = items.iterator();
            while (iter.hasNext()) {
                System.out.println("iterator");
                FileItem item = (FileItem) iter.next();

                if (item.isFormField()) {
                    processFormField(item);
                   
                } else {
                    try {
                        processUploadedFile(item);
                        request.getRequestDispatcher("ImportarXls?url="+item.getName()).forward(request, response);
                    } catch (Exception ex) {
                        Logger.getLogger(UploadFile.class.getName()).log(Level.SEVERE, null, ex);
                    }
                }
            }

//Create a progress listener
           
            
        }catch(Error e){ 
            out.println("Erro:"+ e);
        }
        finally {
            out.println("Finalizou");
            out.close();
        }
    }

    // <editor-fold defaultstate="collapsed" desc="HttpServlet methods. Click on the + sign on the left to edit the code.">
    /** 
     * Handles the HTTP <code>GET</code> method.
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        try {
            processRequest(request, response);
        } catch (FileUploadException ex) {
            Logger.getLogger(UploadFile.class.getName()).log(Level.SEVERE, null, ex);
        }
    }

    /** 
     * Handles the HTTP <code>POST</code> method.
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        try {
            processRequest(request, response);
        } catch (FileUploadException ex) {
            Logger.getLogger(UploadFile.class.getName()).log(Level.SEVERE, null, ex);
        }
    }

    /** 
     * Returns a short description of the servlet.
     * @return a String containing servlet description
     */
    @Override
    public String getServletInfo() {
        return "Short description";
    }// </editor-fold>

    private void processFormField(FileItem item) {
        System.out.println("processFormField");
        String fieldName = item.getFieldName();
        String fileName = item.getName();
        String contentType = item.getContentType();
        boolean isInMemory = item.isInMemory();
        long sizeInBytes = item.getSize();
        
        System.out.println(fieldName);
    }

    private void processUploadedFile(FileItem item) throws Exception {        
        try {
             String name = item.getFieldName();
             boolean writeToFile = false;
             System.out.println("processUploadedFile");
             System.out.println("File field " + name + " with file name " + item.getName() + " detected.");
              // Process the input stream
          
            // Process a file upload
            if (writeToFile) {
                File uploadedFile = new File(path+"\\"+item.getName());
                item.write(uploadedFile);
            } else {
                InputStream uploadedStream = item.getInputStream();
                // write the inputStream to a FileOutputStream
                OutputStream out = new FileOutputStream(new File(path+"\\"+item.getName()));
                int read = 0;
                byte[] bytes = new byte[1024];

                while ((read = uploadedStream.read(bytes)) != -1) {
                       out.write(bytes, 0,read);
                }
                uploadedStream.close();
                out.flush();
                out.close();
                System.out.println("arquivo enviado com sucesso");
            }
        } catch (IOException ex) {
            Logger.getLogger(UploadFile.class.getName()).log(Level.SEVERE, null, ex);
        }
       
    }
}
Criado 15 de dezembro de 2011
Respostas 0
Participantes 1