How to do a file upload & download using Apache Commons FileUpload?

Hi, I have read through the user guide but I don't understand what are the steps as to implementing the functions...
http://commons.apache.org/fileupload/using.html
How do I Create a servlet to read the contents(filename) of te dir where the files are, then create a collection (ArrayList for instance) with the files path and send this collection back to a jsp page.In jsp page, iterate through the collection and build the links (with scriptlets or c tags)
Can help? Thanks for the guidance!

This is my single_upload_page.jsp
<%@ page import="java.io.*" %>
<%
     //to get the content type information from JSP Request Header
     String contentType = request.getContentType();
     //here we are checking the content type is not equal to Null and
//as well as the passed data from mulitpart/form-data is greater than or
//equal to 0
     if ((contentType != null) && (contentType.indexOf("multipart/form-data") >= 0)) {
          DataInputStream in = new DataInputStream(request.getInputStream());
          //we are taking the length of Content type data
          int formDataLength = request.getContentLength();
          byte dataBytes[] = new byte[formDataLength];
          int byteRead = 0;
          int totalBytesRead = 0;
          //this loop converting the uploaded file into byte code
          while (totalBytesRead < formDataLength) {
               byteRead = in.read(dataBytes, totalBytesRead, formDataLength);
               totalBytesRead += byteRead;
          String file = new String(dataBytes);
          //for saving the file name
          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;
          //extracting the index of file
          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;
          // creating a new file with the same name and writing the content in new file
          String folder = "C:/Program Files/Apache Software Foundation/Tomcat 5.5/webapps/ROOT/test/x/";     
          FileOutputStream fileOut = new FileOutputStream(folder + saveFile);     
                         //out.print("Saved here: " + saveFile);     
                         //fileOut.write(dataBytes);     
          fileOut.write(dataBytes, startPos, (endPos - startPos));
          fileOut.flush();
          fileOut.close();
          %><Br><table border="2"><tr><td><b>You have successfully upload the file by the name of:</b>
          <% out.println(saveFile); %></td></tr></table> <%
%>

Similar Messages

  • File upload, download using ADF UIX and not JSP

    I have examples for the file upload, download using JSP
    But I want to use ADF UIX. Look and feel in this is impressing and I want to use this. Any one have example for this.
    Users will select a file from their desktop
    This will be stored into the database (Any document. Word, Excel)
    When they query the records then the UIX column need to give a hyperlink. Clicking on the link should prompt to download the file to the local system

    Sure, I use the Apache Commons File Upload package, so that is what I will discuss here ( [Commons File Upload|http://commons.apache.org/fileupload/] ).
    The Commons File Upload uses instances of ProgressListener to receive upload progress status. So first create a simple class that implements ProgressListener:
    public class ProgressListenerImpl implements ProgressListener {
        private int percent = 0;
        public int getPercentComplete() {
            return percent;
        public void update(long pBytesRead, long pContentLength, int pItems) {
            if (pContentLength > -1) { //content length is known;
                percent = (new Long((pBytesRead / pContentLength) * 100)).intValue();
    }So in your Servlet that handles file upload you will need to create an instance of this ProgressListenerImpl, register it as a listener and store it in the session:
    ServletFileUpload upload = new ServletFileUpload();
    ProgressListenerImpl listener = new ProgressListenerImpl();
    upload.setProgressListener(listener);
    request.getSession().setAttribute("ProgressListener", listener);
    ...Now create another servlet that will retrieve the ProgressListenerImpl, get the percent complete and write it back (how you actually write it back is up to you, could be text, an XML file, a JSON object, up to you):
    ProgressListenerImpl listener = (ProgressListenerImpl) request.getSession().getAttribute("ProgressListener");
    response.getWriter().println("" + listener.getPercentComplete());
    ...Then your XMLHttpRequest object will call this second servlet and read the string returned as the percent complete.
    HTH

  • File upload using apache Commons FileUpload problem

    Hi All,
    I have used Commons FileUpload for uploading files from windows to unix machine. I'm able to upload files but I have a problem about the contents of file copied in unix. When i upload files few files containing special characters are not copied correctly in unix instead ascii codes are getting copied/written. Seems to be a problem with character encoding.
    For example symbol "�" is not getting copied correctly in unix. So as new line character to. If anyone has faced such issues kindly provide few pointers on this. Appreciate your guidance.
    Thanks,
    -Aj

    Thanks for the reply.
    I'm using the Commons FileUpload class "FileItem" which holds the filestream data and using function
    code snippet of file upload
    ServletFileUpload servletFileUpload = new ServletFileUpload(new DiskFileItemFactory());
    List fileItemsList = servletFileUpload.parseRequest(request);
    Iterator it = fileItemsList.iterator();
    while (it.hasNext())
         FileItem fileItemTemp = (FileItem)it.next();
         File saveToFile = new File("newFile");
          fileItem.write(saveToFile ); // write fileItem data to saveToFile.
    } FileItem object takes care of writing data to disk.No idea,how it does internally.
    Thanks,
    -Aj.

  • I am trying to use apache commons fileupload and get this error

    I am using tomcat 5.5 as application server and JDK 1.6,
    does anybody have idea how to resolve this error ?
    description The server encountered an internal error () that prevented it from fulfilling this request.
    exception
    java.security.AccessControlException: access denied (java.util.PropertyPermission java.io.tmpdir read)
         java.security.AccessControlContext.checkPermission(AccessControlContext.java:323)
         java.security.AccessController.checkPermission(AccessController.java:546)
         java.lang.SecurityManager.checkPermission(SecurityManager.java:532)
         java.lang.SecurityManager.checkPropertyAccess(SecurityManager.java:1285)
         java.lang.System.getProperty(System.java:652)
         org.apache.commons.fileupload.disk.DiskFileItem.getTempFile(DiskFileItem.java:611)
         org.apache.commons.fileupload.disk.DiskFileItem.getOutputStream(DiskFileItem.java:556)
         org.apache.commons.fileupload.FileUploadBase.parseRequest(FileUploadBase.java:362)
         org.apache.commons.fileupload.servlet.ServletFileUpload.parseRequest(ServletFileUpload.java:126)
         project.UploadFiles.processRequest(UploadFiles.java:48)
         project.UploadFiles.doPost(UploadFiles.java:107)
         javax.servlet.http.HttpServlet.service(HttpServlet.java:709)
         javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
         sun.reflect.GeneratedMethodAccessor49.invoke(Unknown Source)
         sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
         java.lang.reflect.Method.invoke(Method.java:597)
         org.apache.catalina.security.SecurityUtil$1.run(SecurityUtil.java:244)
         java.security.AccessController.doPrivileged(Native Method)
         javax.security.auth.Subject.doAsPrivileged(Subject.java:517)
         org.apache.catalina.security.SecurityUtil.execute(SecurityUtil.java:276)
         org.apache.catalina.security.SecurityUtil.doAsPrivilege(SecurityUtil.java:162)

    Make sure that the servlet has permissions to write to that directory. I've hit that snag before, and on linux I set the permissions to nobody nobody 775.
    Good luck,
    Krista

  • Urgent : file upload / download functionality in oracle portal page

    Hi friends
    I am new to portal development and am working on oracle portal 9i rel2 . I need to know how to put the file upload and download functionality in any page. the functionality given in oracle portal user guide is not user friendly (i.e in the content area add item of type file" ) .... i need to now is their any way to achieve the simple , one button click upload download functionality ..like we do in yahoo mails etc.
    any help will be highly appreciated.
    regards
    Dheeraj

    Well, I do not know the exact location of the document, however you can find the document to do this in modplsql User Guide ..(File Upload/Download).
    I am pasting some hint:
    e.g.
    Create an html form..code something like this:
    <html>
    <head>
    <title>test upload</title>
    </head>
    <body>
    <FORM      enctype="multipart/form-data"
    action="pls/mydad/write_info"
    method="POST">
    <p>Author's Name:<INPUT type="text" name="who">
    <p>Description:<INPUT type="text" name="description"><br>
    <p>File to upload:<INPUT type="file" name="file"><br>
    <p><INPUT type="submit">
    </FORM>
    </body>
    </html>
    Create a table
    (who varchar2(..).
    description varchar2(..),
    file varchar2(..));
    Your procedure something like this:
    procedure write_info (
    who in varchar2,
    description in varchar2,
    file in varchar2) as
    begin
    insert into myTable values (who, description, file);
    htp.htmlopen;
    htp.headopen;
    htp.title('File Uploaded');
    htp.headclose;
    htp.bodyopen;
    htp.header(1, 'Upload Status');
    htp.print('Uploaded ' || file || ' successfully');
    htp.bodyclose;
    htp.htmlclose;
    end;
    You should be able to download/access the file using the following URL format:
    http://<host>:<port>/pls/<dad>/docs/<file_name>
    Where file name is = Look for the value in the "myTable" > file.
    Do tell how you get on this.
    Thanx,
    Chetan.

  • File Upload/Download storing in ECC

    hi Guys,
    Using webdynpro abap application I am uploading a file.I want to store this file in the backend database(R/3). I am not able to stroe the Xstring value to the table.
    So I have made my table with field with  data type as string.
    Is there an standard function module to convert Xstring to String.
    Because in another webdynpro application I want to download the file which was uploaded so we require a function module to convert string to xstring again.
    Tell me how to store the Xstring data of the file to database tabel and agian download it.
    Regards,
    Shamila.

    Hi,
    Chek this standard document
    http://help.sap.com/saphelp_nw70/helpdata/EN/b3/be7941601b1d09e10000000a155106/frameset.htm
    Also check these forum threads
    Re: download a file
    File Upload/Download
    File download in Local PC
    Re: File Download to Excel
    for file upload control you can look at WDR_TEST_EVENTS component

  • How to send multiple files in parallel using ftp with single connection

    Hi.
    i have written code for file upload manager using ftp..
    it perfectly working with sequence file uploading in single connection..
    And i tried to upload multiple files with parallel processing in a single connection.... but it is not working properly.. i also used thread concept
    but single file only transfered and connection refused...
    my code here...
    //////////////////// main class //////////////////////////////////////////
    ftp.connect();
    ftp.login();
    String [] archivos = new  String[100];
                                      File dir = new File("C:\\Files Uploading\\");
                                       archivos = dir.list();
                                       for (int s=0; s<archivos.length;s++)
         //Start Data Transfer Here
         new DataTransfer(archivos[s]).start();
                                       Thread.sleep(1000);
    /////////////////////// thread class ////////////////////////////////
    class DataTransfer extends Thread
          String FileName="";
          String LocalPath="",RemotePath="";
           public DataTransfer(String fname)
         FileName = fname;
         LocalPath = "C:\\Files Uploading\\" + FileName;
         RemotePath = FileName;
         System.out.println(LocalPath);          
            public void run()
                        System.out.println("DataTransfer Started");
         /File Transfer Here
         try
               FileInputStream input = new FileInputStream(LocalPath);
                               Ftp_Client.storeFile(RemotePath,input);
         System.out.println("Successfully sent : " + RemotePath);
         catch (Exception exc)
              System.out.println(exc.getMessage());
              System.out.println("DataTransfer Ended");
         }otherwise tell me any other alternate way

    And i tried to upload multiple files with
    parallel processing in a single connection....
    but it is not working properly.FTP isn't a multiplexing protocol. How could it work at all?

  • How do I share files uploaded into the Creative Cloud with other creative cloud members?

    How do I share files uploaded into the Creative Cloud with other creative cloud members?

    Should be easy.  Try this...
    In Thumbnails view, click the little triangle (pointing downward) in the lower-right corner of the asset you want to share.
    In the blue icon bar that appears, click the Share icon (the third icon from the left, just right of the trash icon). The Share dialog should pop up.
    In the Share dialog, enter the email address of the person with whom you want to share the asset, then click the Send Email button - they'll receive an email with a link to your asset. OR
    You can also copy a link to the asset and then paste that into your own email client if you prefer.  To do that, click the Link icon (looks like a "chain", and is to the right of the email "envelope" icon) - then click the Copy Link button.
    Note that the Share options won't be available if your asset is set to "Private" - you can control whether an asset can be viewed (or downloaded) by others by clicking the Public/Private control (green or red "lock" icon).
    You can also access the same Share controls if you click on the file to see it one-up (you can do this from either Thumbnails view or List view); click the Share icon near the upper right corner of the browser window (to the right of the asset name).
    Hope that helps.

  • File Upload/Download

    Hi
    When using the file upload/download functionality, APEX stores the uploaded object in a table by default. See: http://download-uk.oracle.com/docs/cd/B31036_01/doc/appdev.22/b28839/up_dn_files.htm#CJAHDJDA
    Is there a way to specify that the file should NOT be stored in a table, but rather, be stored on the file system?. Example in a directory object location.
    I intend to use the upload/download functionality to load csv files that will then be parsed as external tables.
    Thanks
    Kezie

    Hi,
    I modified the above procedure to point to my tables and trying to create the procedure in Apex database and am getting the following error:
    Procedure:
    CREATE OR REPLACE PROCEDURE write_blob_to_file
    ( p_docid IN NUMBER,
    p_directory IN VARCHAR2,
    p_filename IN VARCHAR2 DEFAULT NULL )
    IS
    l_file utl_file.file_type;
    l_buffer RAW(32767);
    l_amount BINARY_INTEGER := 32767;
    l_position INTEGER := 1;
    l_blob BLOB;
    l_length INTEGER;
    l_filename VARCHAR2(400);
    BEGIN
    SELECT BLOB_CONTENT, MPP_name
    INTO l_blob, l_filename
    FROM MPP_FILES
    WHERE id = p_docid;
    IF p_filename IS NOT NULL THEN
    l_filename := p_filename;
    END IF;
    l_length := dbms_lob.getlength( l_blob );
    l_file := utl_file.fopen( p_directory, l_filename, 'wb', 32767 );
    WHILE l_position < l_length LOOP
    dbms_lob.read( l_blob, l_amount, l_position, l_buffer );
    utl_file.put_raw( l_file, l_buffer, TRUE );
    l_position := l_position + l_amount;
    END LOOP;
    utl_file.fclose( l_file );
    EXCEPTION
    WHEN others THEN
    IF utl_file.is_open( l_file ) THEN
    utl_file.fclose( l_file );
    END IF;
    raise_application_error( -20001, SQLERRM );
    END write_blob_to_file;
    Error:
    ERROR at line 6: PLS-00201: identifier 'UTL_FILE' must be declared
    4. p_filename IN VARCHAR2 DEFAULT NULL )
    5. IS
    6. l_file utl_file.file_type;
    7. l_buffer RAW(32767);
    8. l_amount BINARY_INTEGER := 32767;
    Please let me know what am i missing. I am pretty new to PL/SQL and Apex.
    Also wondering is there a way to download files from tables using Java Stored Procedure. Please give some pointers.
    Ramesh K

  • 2-way file upload/download b/w client/server

    I need help for a good design strategy for 2-way file upload/download betweeen client and server.
    I have to upload a set of files to the server (which is a servlet)
    and again the servlet downloads another set of files to the client (which is an applet)
    I could find a solution to this problem only to a certain extent (i.e) I can upload any no.of files to the servlet from applet but the servlet can download only a single file to the applet.
    But now the requirement needs the servlet to be able to send more than one file. I am not going anywhere ahead from this point since last 2 days.
    I have used ObjectOutputStream-ObjectInputStream objects at both ends for communcation and sending the files as bufferes of 128 size. But this is becoming more complicated to manage the streams!!
    if anyone of you have done this before please help with this!
    Thaks
    sri

    Give this a try.
    1) construct
    2) call ZipDocVO.add(Serializable) for each obj that you wish to send.
    3) call ZipDocVO.zip() to zip it up when you are finished adding objects.
    4) send the ZipDocVO, using ObjectOuputStream or whatever
    5) call ZipDocVO.unzip()
    6) call ZipDocVO.getDocuments() to access your objects
    import java.io.*;
    import java.util.zip.*;
    import java.util.*;
    public class ZipDocVO implements Serializable {
         private List     vos;
         private byte[]     rawData;
         private boolean     isZipped;
         public ZipDocVO( byte botype, int key )
              vos = new ArrayList();
         public List getDocuments() { return vos; }
         public void add( Serializable doc ) { vos.add( doc ); }
         private boolean isZipped() { return isZipped; }
         public void zip() {
              if( isZipped() ) {
                   System.out.println( "Already zipped!" );
              else {
                   try {
                        // First zip our documents
                        ByteArrayOutputStream baos = new ByteArrayOutputStream();
                        GZIPOutputStream gzos = new GZIPOutputStream( baos );
                        ObjectOutputStream oos = new ObjectOutputStream( gzos );
                        oos.writeObject( vos );
                        oos.close();
                        // Then get rid of the unzipped versions
                        rawData = baos.toByteArray();
                        vos = null;
                        isZipped = true;
                   catch( IOException ioe ) {
                        System.out.println( "Unable to zip : " +ioe.getMessage());
         public void unzip() {
              if( !isZipped() ) {
                   System.out.println( "Not zipped!" );
              else {
                   try {
                        // First unzip our documents
                        ByteArrayInputStream bais = new ByteArrayInputStream( rawData );
                        GZIPInputStream gzis = new GZIPInputStream( bais );
                        ObjectInputStream ois = new ObjectInputStream( gzis );
                        vos = (ArrayList)ois.readObject();
                        ois.close();
                        // Then get rid of the zipped versions
                        rawData = null;
                        isZipped = false;
                   catch( Exception e ) {
                        System.out.println( "Unable to unzip : " +e.getMessage());
    }

  • File Uploads/Downloads

    I have an HP Pavillion Desktop with Windows 7 operating system. I think one of my children has disabled something because when I click on anything to do a file upload/download, I can't access my Desktop or any files on it. Help!

    Hi,
    The easiest way to solve this may be to run Windows System Restore.  First, copy any files currently on your Desktop, paste them into a new folder, then cut and paste the folder in to your Documents folder.
    Once you've done this, shut down the PC.  Windows System Restore is usually best run in Safe Mode.  Tap away at f8 as you start the PC to enter Windows Recovery Console.  Use the arrow keys to select Safe Mode and hit enter.  When this has loaded, from the Start Menu, click All Programs, click Accessories, click System Tools and launch System Restore.  Pick a restore point before at least 24 hours before this issue and then proceed with the restore process.  When complete, Windows will reboot as normal.
    Regards,
    DP-K
    ****Click the White thumb to say thanks****
    ****Please mark Accept As Solution if it solves your problem****
    ****I don't work for HP****
    Microsoft MVP - Windows Experience

  • How to stop photo stream uploading/downloading in the background

    Does anyone know how to stop the iphoto upload/download as my broadband gets killed everytime I add photos to my mac.
    Let me explain that I have a 6-8 MB down link but my uplink is only 0.2Mb really slow.  So when I quit iphoto I can't play any online games for ages as Photostream is taking up my complete band width.  Mainly due to the fact that it is also downloading the photos to my iPad and my wifes iPhone I just imported the photos off those two devices but photostream wants to put a second copy on the device. argh
    please give me better control I want to upload the photos (shared library) to photostream but only when the iPhoto app is open so I have the choice of when my bandwidth is used. either that or make the upload only happen with the device is switch off / not used so if I open a network game the bandwidth is freed until the game is closed.
    thanks
    IrishAdo

    Talk to Apple here...
    http://www.apple.com/feedback/

  • How to extract .sit files(in MAC)  using java program

    Hi,
    please help me , i want to simple program for
    " how to extract .sit files(in MAC) using java program"
    that sit files same as zip files in windows..[                                                                                                                                                                                                                                                                                                                                   

    Thanks for reply...
    but i search in the google about this topic...there is no results will appear..
    the problem is "i have to run program in the MacOS like extract all the
    .sit(StuffIt) extension files. These sit files same as zip files in the windows... we have one tool called StuffIt Expander but it is 3rd party tool. but here requirement is i have to write my own program to extract all the files same as zip file program...
    please do the needful..i am waiting for ur reply,,,

  • How to transfer pc file to Samsung using the adobe reader app?

    how to transfer pc file to Samsung using the adobe reader app?

    I solved the problem.  I manually created my own Adobe PDF folder by connecting the phone via usb to my PC, Windows Autoplay gave me the option to 'Open device to view files'. Explorer then displayed all the folders on the phone.  I created an Adobe PDF folder manually and copied the PDFs I wanted to view into that folder.  Adobe Reader then found the files without a problem.  I clearly was missing something quite simple but something I'm sure a lot of people would miss.  Perhaps if the next version of Adobe Reader for Android created this folder automatically, like Kindle and Kobo and other readers do, it might save a lot of people a bit of a headache.

  • Error when attempting to upload:org/apache/commons/fileupload/disk/DiskFile

    Hi there,
    I am attempting to use struts to upload an image to a folder within my application.
    The following error is given:
    java.lang.NoClassDefFoundError: org/apache/commons/fileupload/disk/DiskFileItem
         org.apache.struts.upload.CommonsMultipartRequestHandler.addTextParameter(CommonsMultipartRequestHandler.java:388)
         org.apache.struts.upload.CommonsMultipartRequestHandler.handleRequest(CommonsMultipartRequestHandler.java:204)
         org.apache.struts.util.RequestUtils.populate(RequestUtils.java:405)
         org.apache.struts.action.RequestProcessor.processPopulate(RequestProcessor.java:818)
         org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:194)
         org.apache.struts.action.ActionServlet.process(ActionServlet.java:1913)
         org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:462)
         javax.servlet.http.HttpServlet.service(HttpServlet.java:710)
         javax.servlet.http.HttpServlet.service(HttpServlet.java:803)Does anyone know what could be causing this?
    I have copied all the commons jars into both tomcat and my WEB-INF/lib directory. I am running the application on tomcat through Eclipse. Would this cause any problems?
    Many thanks...

    Diablo,
    I did already have the jar, but it was an older version. I downloaded the newer version and it worked fine.
    Thanks for making me look again at something I had discounted!

Maybe you are looking for

  • How to display my FOX formula result on the layout

    Hi Guru's, I have created one Fox Formula for OTB using the given below calculation Planned Open-To-Buy (Retail Price) = Sales / Retail Value +  Last Planned Stock (Retail Value) - Open Purchase Orders (Retail Value with Tax) - GR Posting Date / Vend

  • Sata drive is not recognized by XP

    I have a neo865 and the problem is I can't get XP to recognize more then 130 gbyte of a 250 gbyte SATA drive even after loading the driver that came with the motherboard.  Does anyone know a workaround

  • What if all the redo logs of a database are lost

    I want to know how a database can be recovered if all the three redo logs are lost at the same time. Thanks, Prabhath.

  • Why cant Itunes use a user specified watch folder

    The Zune (RIP) watch folders were extremely easy: tell the player where to look and the service will add all music from that location verbatim and automatically rescan, importing any new files added to the folder. Any music I purchased was saved to t

  • Bug with validation or rendering after validation failure (?)

    Can anyone confirm the behaviour on other J2EE containers that I will describe below ? h2. Environment: JBoss 7.1.1 (Brontes) JDK 1.7.0_06 32-bit Win7 64-bit 17:40:44,365 INFO  [javax.enterprise.resource.webcontainer.jsf.config] (MSC service thread 1