Hi Dror

Thanks for the code.  I'll give it a try.

If there is such a thing where the oreilly package automatically renames
files that would be great. It would mean I do not need any of my code
below. But I have tried both MultipartParser and MultipartRequest and as
far as I can see when files are uploaded, the second time the files are
simply written over the old ones without any ".1" or ".2" extending the
  new filenames.

In the examples given by oreilly there is no reference to that renaming
procedure either. Do you have a code example on how to make that work?

Thanks very much.

Hugo


Dror Matalon wrote:
> Hi,
>
> Oreilly has a way to rename files automatically so that if a file
> exists, a new file with a ".1", ".2" etc, is created (or something
>  similar).
>
> If that doesn't work for you, you don't really need two passes,
> Just keep a vector of java.io.File and use them later when you figured
> out what you want to do.
>
>       Enumeration files = multi.getFileNames();
>       while (files.hasMoreElements()) {
>         String name = (String)files.nextElement();
>         String filename = multi.getFilesystemName(name);
>         String type = multi.getContentType(name);
>         File f = multi.getFile(name);
>
>                         /*
>                          *In here preserve the fields in a hash
>                          * something like hashFile.put(filename, f)
>                          */
>
>         out.println("<p>name: " + name);
>         out.println("filename: " + filename);
>         out.println("type: " + type);
>         if (f != null) {
>           out.println("f.toString(): " + f.toString());
>           out.println("f.getName(): " + f.getName());
>           out.println("f.exists(): " + f.exists());
>           out.println("f.length(): " + f.length());
>           out.println();
>         }
>       }
>
> Haven't really tried this, but it should work.
>
> Dror
>
> On Tue, Oct 15, 2002 at 02:08:24PM +0800, hugo wrote:
>
>>Hi
>>
>>I am trying to do something in a jsp file with the oreilly
>>MultipartParser functions and I am getting immensely frustrated as it
>>does not work. What I would like to do is:
>>
>>1. Get information from a set of form fields with the MultipartParser,
>>including upload fields.
>>
>>2. Load the filenames from the upload fields into a Vector and compare
>>the filenames from that Vector to filenames already in the directory
>>where the files will be downloaded. This is in order to avoid files with
>>the same filenames overriding existing files.
>>
>>3. If the filenames do not exist in the directory, download the files
>>into the directory.
>>
>>What I am getting stuck on is the fact that I have to use
>>MultipartParser to read the files from the form and store the filenames
>>in a Vector. I then compare with existing filenames, then  would like to
>>use MultipartParser AGAIN to write the filenames to the specified
>>directory. But the second time around, the MultipartParser does not want
>>to write anything to the directory as the method readNextPart()
>>apparently only works once.
>>
>>Here is the code:
>>
>>1. Get information from form fields and write filenames into a Vector:
>>(Vector is defined and initialised earlier on).
>>
>>MultipartParser parser = new MultipartParser(request, 10*1024*1024);
>>
>>Part part = null;
>>
>>while ((part = parser.readNextPart()) != null) {
>>if (part.isFile()) {
>>// It's a file part
>> FilePart filePart = (FilePart) part;
>>    String fileName = filePart.getFileName();
>>    if (fileName != null) {
>>        existingfiles.add(fileName);
>>    out.println("filename: " + fileName);
>>        }
>>  }
>>}
>>
>>2. Compare filenames in Vector with files already in the directory. Note
>>that the String "proj_id" is a string which I obtain from a database - I
>>didn't put that code in here.
>>
>>try {
>>
>>    Process p = Runtime.getRuntime().exec("ls
>>/var/www/projects_data/"+proj_id);
>>
>>    BufferedReader stdInput = new BufferedReader(new
>>InputStreamReader(p.getInputStream()));
>>            String s = "";
>>            BufferedReader stdError = new BufferedReader(new
>>InputStreamReader(p.getErrorStream()));
>>            if ((s = stdInput.readLine())== null) {
>>            samefile = "no";
>>            }
>>            while ((s = stdInput.readLine())!= null) {
>>            StringTokenizer tr = new StringTokenizer(s," ", true );
>>            String t = tr.nextToken();
>>            for (int i = 0; i < existingfiles.size(); i++) {
>>                out.println ("<br>Vector value is: " +
>>existingfiles.get(i).toString());
>>               if (t.equals(existingfiles.get(i).toString()))  {
>>                samefile = "yes";
>>                samefilenames.add(existingfiles.get(i).toString());
>>               } else {
>>                samefile = "no";
>>                }
>>            }
>>          }
>>        }   catch (IOException e) {
>>            out.println("exception:  ");
>>            e.printStackTrace();
>>            System.exit(-1);
>>         }
>>
>>3. Use the parser again, this time to write the files to the directory
>>with the line
>>
>>long size = fileP.writeTo(dir);
>>
>>(Note that file "dir" has been set tot the directory earlier)
>>
>>This happens only if the string samefile equals "no" of course. If
>>samefile equals "yes" a message is displayed on the screen telling the
>>user that the file already exists.
>>
>>Note that I am even initialising a new FileParser called fileP - I
>>thought this may help. But whatever I try, after the line:
>>
>>while ((part = parser.readNextPart()) != null) {
>>
>>nothing happens.
>>
>>It seems to me that the parser cannot be used twice. Help!!
>>
>>if (samefile.equals("yes")) {
>>        out.println ("<br><br><br><br><p><center><font size=+1
>>color=#9966CC><b>You have uploaded the following file(s) with the same
>>name(s) as existing file(s):");
>>        out.println ("<p></p>");
>>        for (int j = 0; j < existingfiles.size(); j++) {
>>        out.println ("<p>" + existingfiles.get(j).toString());
>>        }
>>      } else if (samefile.equals("no")) {
>>       while ((part = parser.readNextPart()) != null) {
>>       String name = part.getName();
>>       out.println("name: " + name);
>>        if (part.isFile()) {
>>          FilePart fileP = (FilePart) part;
>>          String fileN = fileP.getFileName();
>>           out.println("filename: " + fileN);
>>            if (fileN != null) {
>>                long size = fileP.writeTo(dir);
>>           }
>>        }
>>       }
>>      }
>>
>>
>>Any help, particularly a code example on how to use MultipartParser
>>twice to upload and save files, or even on how to do all of this
>>differently will be greatly appreciated.
>>
>>Thanks
>>
>>Hugo
>>--
>>Dr Hugo Bouckaert
>>Systems and Programming Engineer
>>
>>GeoInformatics Exploration Australia P/L
>>57 Havelock St
>>West Perth, WA 6005
>>PO Box 1675, West Perth 6872
>>
>>Ph:       61 08 9420 7400
>>Fax:      61 08 9226 1299
>>
>>www.geoinformex.com
>>
>>------------------------------------------------------------------------
>>This email and any attachments may be confidential or legally
>>privileged. If you received this message in error or are not the
>>intended recipient, you should destroy the e-mail message and any
>>attachments or copies, and you are prohibited from retaining,
>>distributing, disclosing or using any information contained herein.
>>Please inform us of the erroneous delivery by return e-mail. Thank you
>>for your cooperation.
>>
>>===========================================================================
>>To unsubscribe: mailto [EMAIL PROTECTED] with body: "signoff
>>JSP-INTEREST".
>>For digest: mailto [EMAIL PROTECTED] with body: "set JSP-INTEREST
>>DIGEST".
>>Some relevant FAQs on JSP/Servlets can be found at:
>>
>>http://archives.java.sun.com/jsp-interest.html
>>http://java.sun.com/products/jsp/faq.html
>>http://www.esperanto.org.nz/jsp/jspfaq.jsp
>>http://www.jguru.com/faq/index.jsp
>>http://www.jspinsider.com
>
>
> --
> Dror Matalon
> Zapatec Inc
> 1700 MLK Way
> Berkeley, CA 94709
> http://www.zapatec.com
>
> ===========================================================================
> To unsubscribe: mailto [EMAIL PROTECTED] with body: "signoff JSP-INTEREST".
> For digest: mailto [EMAIL PROTECTED] with body: "set JSP-INTEREST DIGEST".
> Some relevant FAQs on JSP/Servlets can be found at:
>
>  http://archives.java.sun.com/jsp-interest.html
>  http://java.sun.com/products/jsp/faq.html
>  http://www.esperanto.org.nz/jsp/jspfaq.jsp
>  http://www.jguru.com/faq/index.jsp
>  http://www.jspinsider.com
>


--
Dr Hugo Bouckaert
Systems and Programming Engineer

GeoInformatics Exploration Australia P/L
57 Havelock St
West Perth, WA 6005
PO Box 1675, West Perth 6872

Ph:       61 08 9420 7400
Fax:      61 08 9226 1299

www.geoinformex.com

------------------------------------------------------------------------
This email and any attachments may be confidential or legally
privileged. If you received this message in error or are not the
intended recipient, you should destroy the e-mail message and any
attachments or copies, and you are prohibited from retaining,
distributing, disclosing or using any information contained herein.
Please inform us of the erroneous delivery by return e-mail. Thank you
for your cooperation.

===========================================================================
To unsubscribe: mailto [EMAIL PROTECTED] with body: "signoff JSP-INTEREST".
For digest: mailto [EMAIL PROTECTED] with body: "set JSP-INTEREST DIGEST".
Some relevant FAQs on JSP/Servlets can be found at:

 http://archives.java.sun.com/jsp-interest.html
 http://java.sun.com/products/jsp/faq.html
 http://www.esperanto.org.nz/jsp/jspfaq.jsp
 http://www.jguru.com/faq/index.jsp
 http://www.jspinsider.com

Reply via email to