You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@commons.apache.org by Jaime Martín <ja...@rbcdexia-is.es> on 2009/12/03 18:42:47 UTC

problem uploading pdf file

Hi:
I´m using FileUpload 1.2.1 I want to upload a pdf file. As a first 
approach I want to achieve this:
I have a file C:/firm-jmp.pdf and I want to upload it to 
D:/test/firm-jmp.pdf

On the one hand I invoke the servlet this way:

    public String saveFile()
    {
        String fileName ="";
        try{
            fileName = "firm-jmp.pdf";
            String nombreFichero ="C:/".concat(fileName);

            URL url = new URL("http://localhost:8080/FondvalCNMV/upload");
            URLConnection con = url.openConnection();
             // inform the connection that we will send output and 
accept input
            con.setDoInput(true);
            con.setDoOutput(true);

           // Don't use a cached version of URL connection.
           con.setUseCaches (false);
           con.setDefaultUseCaches (false);

           con.setRequestProperty("Content-Type", 
"multipart/form-data;boundary=---------------------------7d711d1020176");
          
           // define a new PrintWriter on the output stream
           PrintWriter outWriter = new PrintWriter(con.getOutputStream());

           // send data to the servlet
           outWriter.print("fileName="+nombreFichero);
          
           outWriter.close();
          
           InputStream input = con.getInputStream();
           File outputFile = new File(fileName);
           FileOutputStream out = new FileOutputStream(outputFile);

           boolean eof = false;
           // read all bytes from the input and write them to the output
           while (!eof) {
               // read  the stream
             int byteValue = input.read();
             out.write(byteValue);
             if (byteValue  == -1)
               eof = true;
           }
           out.flush();
           out.close();
        }catch (Exception e) {
            e.printStackTrace();
            fileName ="";
        }
        return fileName;
    }

On the other hand this is my servlet´s doPost.


    protected void doPost(HttpServletRequest request, 
HttpServletResponse response)
    throws ServletException, IOException {
        String nomFichero ="";
        if (request.getParameter("firmaApoderado") != null) {
            nomFichero = request.getParameter("firmaApoderado");
            System.out.println("nomFichero"+nomFichero);
        }
        boolean isMultipart = ServletFileUpload.isMultipartContent(request);
        
        if(isMultipart) {
            // Create a factory for disk-based file items
            DiskFileItemFactory factory = new DiskFileItemFactory();
            // Set factory constraints
            factory.setSizeThreshold(1000000);
            File ff = new File("C:/firma-jmp.pdf");
            factory.setRepository(ff);
            // Create a new file upload handler
            ServletFileUpload upload = new ServletFileUpload(factory);
            // Set overall request size constraint
            upload.setSizeMax(10000000);
            upload.setHeaderEncoding("multipart/form-data");
       // Parse the request
            List<FileItem> items;
            try {
                items = upload.parseRequest(request);

            for(FileItem item : items) {
               
            if (item.isFormField()) {
                String name = item.getFieldName();
                String value = item.getString();
                System.out.println("name "+name);
                System.out.println("value "+value);
                String uploadFileName="D:/test/"+name ;
                File f = new File(uploadFileName);
                item.write(f);
            }
             }
            }
            catch (FileUploadException e) {
                e.printStackTrace();
            }
            catch (Exception e) {
                e.printStackTrace();
            }                   
           

        }
    }

I have no error, the matter is that items = 
upload.parseRequest(request); turns out to return no items, it seems 
that I receive no file in the request.
I guess I´m doing something wrong as for my invocation.
thanks in advance!

AVISO LEGAL
Este mensaje de correo electrónico y sus documentos adjuntos están dirigidos
exclusivamente a los destinatarios especificados. Puede contener información
confidencial o legalmente protegida. No hay renuncia a la confidencialidad o
privilegio por cualquier transmisión errónea. Si usted no es el destinatario
indicado, le rogamos que lo elimine y se lo comunique al remitente. No debe,
directa o indirectamente, usar, revelar, distribuir, imprimir o copiar 
ninguna de las partes de este mensaje. Si siendo destinatario de este 
mensaje no consintiera el uso de correo electrónico, rogamos nos lo 
comunique inmediatamente.
RBCDexia Investor Services E,S.A. y sus filiales no serán responsables de las
opiniones o informaciones incluidas en este mensaje salvo cuando el remitente esté 
autorizado para establecer que dichas opiniones proceden de RBCDexia Investor
Services ,S.A.  y sus filiales.

DISCLAIMER
Addressee/s identified herein. It may contain confidential or legally 
privileged information. No confidentiality privilege is waived or lost
by any mistransmission. If you are not the intended recipient, please
immediately delete it and notify the sender. You must not, directly or
indirectly, disclose, distribute, print, or copy any part of this message.
If you are the addressee of this message and do not consent to the use of
e-mail, please communicate it to us immediately. RBCDexia Investor Services
S.A. and its subsidiaries are not responsible for the opinions or information
included in this message except when the sender is authorised to state them to
 be the views of RBCDexia Investor Services, S.A. and its subsidiaries.

---------------------------------------------------------------------
To unsubscribe, e-mail: user-unsubscribe@commons.apache.org
For additional commands, e-mail: user-help@commons.apache.org


Re: problem uploading pdf file

Posted by Jaime Martín <ja...@rbcdexia-is.es>.
Thank you very much for your answer I read that FAQ but I didn´t know that

request.getParameter()

caused the stream to be consumed ;-(

I removed that lines but I still receive no items.

My doPost is now :

 protected void doPost(HttpServletRequest request, HttpServletResponse
response)
  throws ServletException, IOException {
      String nomFichero ="";

      boolean isMultipart = ServletFileUpload.isMultipartContent(request);
            if(isMultipart) {
          // Create a factory for disk-based file items
          DiskFileItemFactory factory = new DiskFileItemFactory();
          // Set factory constraints
          factory.setSizeThreshold(1000000);
          File ff = new File("C:/firma-jmp.pdf");
          factory.setRepository(ff);
          // Create a new file upload handler
          ServletFileUpload upload = new ServletFileUpload(factory);
          // Set overall request size constraint
          upload.setSizeMax(10000000);
          upload.setHeaderEncoding("multipart/form-data");
     // Parse the request
          List<FileItemitems;
          try {
              items = upload.parseRequest(request);>
          for(FileItem item : items) {
                        if (item.isFormField()) {
              String name = item.getFieldName();
              String value = item.getString();
              System.out.println("name "+name);
              System.out.println("value "+value);
              String uploadFileName="D:/test/"+name ;
              File f = new File(uploadFileName);
              item.write(f);
          }
           }
          }
          catch (FileUploadException e) {
              e.printStackTrace();
          }
          catch (Exception e) {
              e.printStackTrace();
          }
      }
  }

any idea?



Martin Cooper escribió:
> http://commons.apache.org/fileupload/faq.html#empty-parse
>
> Please read the very first FAQ item.
>
> This is at least one problem you have. Your call to
> request.getParameter() causes the input stream to be consumed and
> processed by the servlet container.
>
> --
> Martin Cooper
>
>
> 2009/12/3 Jaime Martín <ja...@rbcdexia-is.es>:
>   
>> Hi:
>> I´m using FileUpload 1.2.1 I want to upload a pdf file. As a first approach
>> I want to achieve this:
>> I have a file C:/firm-jmp.pdf and I want to upload it to
>> D:/test/firm-jmp.pdf
>>
>> On the one hand I invoke the servlet this way:
>>
>>   public String saveFile()
>>   {
>>       String fileName ="";
>>       try{
>>           fileName = "firm-jmp.pdf";
>>           String nombreFichero ="C:/".concat(fileName);
>>
>>           URL url = new URL("http://localhost:8080/FondvalCNMV/upload");
>>           URLConnection con = url.openConnection();
>>            // inform the connection that we will send output and accept
>> input
>>           con.setDoInput(true);
>>           con.setDoOutput(true);
>>
>>          // Don't use a cached version of URL connection.
>>          con.setUseCaches (false);
>>          con.setDefaultUseCaches (false);
>>
>>          con.setRequestProperty("Content-Type",
>> "multipart/form-data;boundary=---------------------------7d711d1020176");
>>                  // define a new PrintWriter on the output stream
>>          PrintWriter outWriter = new PrintWriter(con.getOutputStream());
>>
>>          // send data to the servlet
>>          outWriter.print("fileName="+nombreFichero);
>>                  outWriter.close();
>>                  InputStream input = con.getInputStream();
>>          File outputFile = new File(fileName);
>>          FileOutputStream out = new FileOutputStream(outputFile);
>>
>>          boolean eof = false;
>>          // read all bytes from the input and write them to the output
>>          while (!eof) {
>>              // read  the stream
>>            int byteValue = input.read();
>>            out.write(byteValue);
>>            if (byteValue  == -1)
>>              eof = true;
>>          }
>>          out.flush();
>>          out.close();
>>       }catch (Exception e) {
>>           e.printStackTrace();
>>           fileName ="";
>>       }
>>       return fileName;
>>   }
>>
>> On the other hand this is my servlet´s doPost.
>>
>>
>>   protected void doPost(HttpServletRequest request, HttpServletResponse
>> response)
>>   throws ServletException, IOException {
>>       String nomFichero ="";
>>       if (request.getParameter("firmaApoderado") != null) {
>>           nomFichero = request.getParameter("firmaApoderado");
>>           System.out.println("nomFichero"+nomFichero);
>>       }
>>       boolean isMultipart = ServletFileUpload.isMultipartContent(request);
>>             if(isMultipart) {
>>           // Create a factory for disk-based file items
>>           DiskFileItemFactory factory = new DiskFileItemFactory();
>>           // Set factory constraints
>>           factory.setSizeThreshold(1000000);
>>           File ff = new File("C:/firma-jmp.pdf");
>>           factory.setRepository(ff);
>>           // Create a new file upload handler
>>           ServletFileUpload upload = new ServletFileUpload(factory);
>>           // Set overall request size constraint
>>           upload.setSizeMax(10000000);
>>           upload.setHeaderEncoding("multipart/form-data");
>>      // Parse the request
>>           List<FileItem> items;
>>           try {
>>               items = upload.parseRequest(request);
>>
>>           for(FileItem item : items) {
>>                         if (item.isFormField()) {
>>               String name = item.getFieldName();
>>               String value = item.getString();
>>               System.out.println("name "+name);
>>               System.out.println("value "+value);
>>               String uploadFileName="D:/test/"+name ;
>>               File f = new File(uploadFileName);
>>               item.write(f);
>>           }
>>            }
>>           }
>>           catch (FileUploadException e) {
>>               e.printStackTrace();
>>           }
>>           catch (Exception e) {
>>               e.printStackTrace();
>>           }
>>       }
>>   }
>>
>> I have no error, the matter is that items = upload.parseRequest(request);
>> turns out to return no items, it seems that I receive no file in the
>> request.
>> I guess I´m doing something wrong as for my invocation.
>> thanks in advance!
>>
>> AVISO LEGAL
>> Este mensaje de correo electrónico y sus documentos adjuntos están dirigidos
>> exclusivamente a los destinatarios especificados. Puede contener información
>> confidencial o legalmente protegida. No hay renuncia a la confidencialidad o
>> privilegio por cualquier transmisión errónea. Si usted no es el destinatario
>> indicado, le rogamos que lo elimine y se lo comunique al remitente. No debe,
>> directa o indirectamente, usar, revelar, distribuir, imprimir o copiar
>> ninguna de las partes de este mensaje. Si siendo destinatario de este
>> mensaje no consintiera el uso de correo electrónico, rogamos nos lo
>> comunique inmediatamente.
>> RBCDexia Investor Services E,S.A. y sus filiales no serán responsables de
>> las
>> opiniones o informaciones incluidas en este mensaje salvo cuando el
>> remitente esté autorizado para establecer que dichas opiniones proceden de
>> RBCDexia Investor
>> Services ,S.A.  y sus filiales.
>>
>> DISCLAIMER
>> Addressee/s identified herein. It may contain confidential or legally
>> privileged information. No confidentiality privilege is waived or lost
>> by any mistransmission. If you are not the intended recipient, please
>> immediately delete it and notify the sender. You must not, directly or
>> indirectly, disclose, distribute, print, or copy any part of this message.
>> If you are the addressee of this message and do not consent to the use of
>> e-mail, please communicate it to us immediately. RBCDexia Investor Services
>> S.A. and its subsidiaries are not responsible for the opinions or
>> information
>> included in this message except when the sender is authorised to state them
>> to
>> be the views of RBCDexia Investor Services, S.A. and its subsidiaries.
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: user-unsubscribe@commons.apache.org
>> For additional commands, e-mail: user-help@commons.apache.org
>>
>>
>>     
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: user-unsubscribe@commons.apache.org
> For additional commands, e-mail: user-help@commons.apache.org
>
>
>   

-- 
*Jaime Martín Pérez*
Information Services

*RBC Dexia Investor Services* *España S.A.*
T (+34) 913 609 900
F (+34) 913 609 901
_*www.rbcdexia-is.com*_


AVISO LEGAL
Este mensaje de correo electrónico y sus documentos adjuntos están dirigidos
exclusivamente a los destinatarios especificados. Puede contener información
confidencial o legalmente protegida. No hay renuncia a la confidencialidad o
privilegio por cualquier transmisión errónea. Si usted no es el destinatario
indicado, le rogamos que lo elimine y se lo comunique al remitente. No debe,
directa o indirectamente, usar, revelar, distribuir, imprimir o copiar 
ninguna de las partes de este mensaje. Si siendo destinatario de este 
mensaje no consintiera el uso de correo electrónico, rogamos nos lo 
comunique inmediatamente.
RBCDexia Investor Services E,S.A. y sus filiales no serán responsables de las
opiniones o informaciones incluidas en este mensaje salvo cuando el remitente esté 
autorizado para establecer que dichas opiniones proceden de RBCDexia Investor
Services ,S.A.  y sus filiales.

DISCLAIMER
Addressee/s identified herein. It may contain confidential or legally 
privileged information. No confidentiality privilege is waived or lost
by any mistransmission. If you are not the intended recipient, please
immediately delete it and notify the sender. You must not, directly or
indirectly, disclose, distribute, print, or copy any part of this message.
If you are the addressee of this message and do not consent to the use of
e-mail, please communicate it to us immediately. RBCDexia Investor Services
S.A. and its subsidiaries are not responsible for the opinions or information
included in this message except when the sender is authorised to state them to
 be the views of RBCDexia Investor Services, S.A. and its subsidiaries.

Re: problem uploading pdf file

Posted by Martin Cooper <ma...@apache.org>.
http://commons.apache.org/fileupload/faq.html#empty-parse

Please read the very first FAQ item.

This is at least one problem you have. Your call to
request.getParameter() causes the input stream to be consumed and
processed by the servlet container.

--
Martin Cooper


2009/12/3 Jaime Martín <ja...@rbcdexia-is.es>:
> Hi:
> I´m using FileUpload 1.2.1 I want to upload a pdf file. As a first approach
> I want to achieve this:
> I have a file C:/firm-jmp.pdf and I want to upload it to
> D:/test/firm-jmp.pdf
>
> On the one hand I invoke the servlet this way:
>
>   public String saveFile()
>   {
>       String fileName ="";
>       try{
>           fileName = "firm-jmp.pdf";
>           String nombreFichero ="C:/".concat(fileName);
>
>           URL url = new URL("http://localhost:8080/FondvalCNMV/upload");
>           URLConnection con = url.openConnection();
>            // inform the connection that we will send output and accept
> input
>           con.setDoInput(true);
>           con.setDoOutput(true);
>
>          // Don't use a cached version of URL connection.
>          con.setUseCaches (false);
>          con.setDefaultUseCaches (false);
>
>          con.setRequestProperty("Content-Type",
> "multipart/form-data;boundary=---------------------------7d711d1020176");
>                  // define a new PrintWriter on the output stream
>          PrintWriter outWriter = new PrintWriter(con.getOutputStream());
>
>          // send data to the servlet
>          outWriter.print("fileName="+nombreFichero);
>                  outWriter.close();
>                  InputStream input = con.getInputStream();
>          File outputFile = new File(fileName);
>          FileOutputStream out = new FileOutputStream(outputFile);
>
>          boolean eof = false;
>          // read all bytes from the input and write them to the output
>          while (!eof) {
>              // read  the stream
>            int byteValue = input.read();
>            out.write(byteValue);
>            if (byteValue  == -1)
>              eof = true;
>          }
>          out.flush();
>          out.close();
>       }catch (Exception e) {
>           e.printStackTrace();
>           fileName ="";
>       }
>       return fileName;
>   }
>
> On the other hand this is my servlet´s doPost.
>
>
>   protected void doPost(HttpServletRequest request, HttpServletResponse
> response)
>   throws ServletException, IOException {
>       String nomFichero ="";
>       if (request.getParameter("firmaApoderado") != null) {
>           nomFichero = request.getParameter("firmaApoderado");
>           System.out.println("nomFichero"+nomFichero);
>       }
>       boolean isMultipart = ServletFileUpload.isMultipartContent(request);
>             if(isMultipart) {
>           // Create a factory for disk-based file items
>           DiskFileItemFactory factory = new DiskFileItemFactory();
>           // Set factory constraints
>           factory.setSizeThreshold(1000000);
>           File ff = new File("C:/firma-jmp.pdf");
>           factory.setRepository(ff);
>           // Create a new file upload handler
>           ServletFileUpload upload = new ServletFileUpload(factory);
>           // Set overall request size constraint
>           upload.setSizeMax(10000000);
>           upload.setHeaderEncoding("multipart/form-data");
>      // Parse the request
>           List<FileItem> items;
>           try {
>               items = upload.parseRequest(request);
>
>           for(FileItem item : items) {
>                         if (item.isFormField()) {
>               String name = item.getFieldName();
>               String value = item.getString();
>               System.out.println("name "+name);
>               System.out.println("value "+value);
>               String uploadFileName="D:/test/"+name ;
>               File f = new File(uploadFileName);
>               item.write(f);
>           }
>            }
>           }
>           catch (FileUploadException e) {
>               e.printStackTrace();
>           }
>           catch (Exception e) {
>               e.printStackTrace();
>           }
>       }
>   }
>
> I have no error, the matter is that items = upload.parseRequest(request);
> turns out to return no items, it seems that I receive no file in the
> request.
> I guess I´m doing something wrong as for my invocation.
> thanks in advance!
>
> AVISO LEGAL
> Este mensaje de correo electrónico y sus documentos adjuntos están dirigidos
> exclusivamente a los destinatarios especificados. Puede contener información
> confidencial o legalmente protegida. No hay renuncia a la confidencialidad o
> privilegio por cualquier transmisión errónea. Si usted no es el destinatario
> indicado, le rogamos que lo elimine y se lo comunique al remitente. No debe,
> directa o indirectamente, usar, revelar, distribuir, imprimir o copiar
> ninguna de las partes de este mensaje. Si siendo destinatario de este
> mensaje no consintiera el uso de correo electrónico, rogamos nos lo
> comunique inmediatamente.
> RBCDexia Investor Services E,S.A. y sus filiales no serán responsables de
> las
> opiniones o informaciones incluidas en este mensaje salvo cuando el
> remitente esté autorizado para establecer que dichas opiniones proceden de
> RBCDexia Investor
> Services ,S.A.  y sus filiales.
>
> DISCLAIMER
> Addressee/s identified herein. It may contain confidential or legally
> privileged information. No confidentiality privilege is waived or lost
> by any mistransmission. If you are not the intended recipient, please
> immediately delete it and notify the sender. You must not, directly or
> indirectly, disclose, distribute, print, or copy any part of this message.
> If you are the addressee of this message and do not consent to the use of
> e-mail, please communicate it to us immediately. RBCDexia Investor Services
> S.A. and its subsidiaries are not responsible for the opinions or
> information
> included in this message except when the sender is authorised to state them
> to
> be the views of RBCDexia Investor Services, S.A. and its subsidiaries.
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: user-unsubscribe@commons.apache.org
> For additional commands, e-mail: user-help@commons.apache.org
>
>

---------------------------------------------------------------------
To unsubscribe, e-mail: user-unsubscribe@commons.apache.org
For additional commands, e-mail: user-help@commons.apache.org