Have you seen:
http://www.servlets.com/cos/javadoc/com/oreilly/servlet/multipart/FileRename
Policy.html
http://www.servlets.com/cos/javadoc/com/oreilly/servlet/multipart/DefaultFil
eRenamePolicy.html

We use an implementation of FileRenamePolicy when instantiating the
MultipartRequest. This may be what you need.

-----Original Message-----
From: hugo [mailto:[EMAIL PROTECTED]]
Sent: 02 October 2002 11:07
To: [EMAIL PROTECTED]
Subject: problem using MultipartParser and MultipartRequest together


Hi

I have a jsp file where I would like download files to a particular
directory on the server.

I am have form fields, including file upload fields, the content of
which is forwarded to a second jsp where I use MultipartRequest from the
com.oreilly.servlet.* package to download the uploaded files to a
location on the server.

This all works well, but I would like to check first if file(s) with the
same filename already exists in that directory on the server. This can
be done by executing a unix command on the server and getting the
filenames from the directory.

So far so good. However, the moment I use MultipartRequest to get the
names of the files that are uploaded (to compare them with the ones
already in the directory), they are immediately downloaded to the directory.

So I thought I use MultipartParser first to obtain the filenames - but
the moment I do this, I am using the generic method HttpServlet request
and this means that, when using MultipartParser early in the jsp it
seems I can no longer use MultipartRequest afterwards and vice versa (if
there's a solution to this, please let me know).

This led me to try to make the part that checks existing filenames
agains the filenames in the upload fields into a javaBean - I can then
call the Bean's method that does the checking from my second jsp file
(to which form variables are forwarded). The bean would simply return a
string containing "yes" of "no" depending on whether the filenames to be
stored are unique or not.

However, I have to pass the contents of the fields that contains the
filenames to the bean - which means I have to once more use a request
method to get those values in the first place.

So the problem is that somehow I have to pass on HttpServlet request
values to the bean, and I am not sure how to do this without getting the
values out first with MultiPartParser - which makes it impossible for me
to use MultipartRequest.

The bean is listed in my jsp file as:

<jsp:useBean id="checkupload" scope="session"
class="com.geoinformex.project.checkUpload"/>

and I am calling its method further down in the jsp:

String samefile = checkupload.getdoCheck(BUT HERE I NEED TO PASS IN A
REQUEST!);

I have to pass in the request (parameter of file to be uploaded) to the
bean - have a look at the method below in the bean itself. Note that
without making the bean extend HttpServlet I cannot construct
MultipartParser parser in the Bean's method getdoCheck later on.

Complex problem, I know, but I am sort of hoping someone can set me back
on the right path, as at this stage I am really lost as how to proceed.

Any help, particularly code examples will be greatly appreciated.

Thanks very much.

Hugo

***
Here is the bean:

package com.geoinformex.project;
import java.io.*;
import java.text.*;
import java.util.*;
import javax.servlet.*;
import javax.servlet.http.*;
import java.sql.*;
import com.oreilly.servlet.*;
import com.oreilly.servlet.multipart.*;
import com.oreilly.servlet.multipart.MultipartParser;

public class checkUpload extends HttpServlet{

//String lineOfText ="";
String proj_id_b ="";
String proj_id ="";
//String makedir ="";
int proj_id_count = 0;
Vector proj_id_number = new Vector();
Vector proj_id_base = new Vector();
Vector project_ID_list = new Vector();
Vector existingfiles = new Vector();

String upload1 = "";
String upload2 = "";
String upload3 = "";
Part part;

public String getdoCheck(HttpServletRequest request,HttpServletResponse
response) throws IOException, ServletException {

String samefile = "";

//Trying to get the filenames from the upload fields from my form (but
this fails).

MultipartParser parser = new MultipartParser(request, 10*1024*1024);
while ((part = parser.readNextPart()) != null) {
if (part.isFile()) {
// It's a file part I am after
  FilePart filePart = (FilePart) part;
     String fileName = filePart.getFileName();
     if (fileName != null) {
         existingfiles.add(fileName);
     System.out.println("filename: " + fileName);
         }
   }
}

// Reading in filenames from the directory.

try {
     Process p = Runtime.getRuntime().exec("ls /var/www/projects_data/");
     BufferedReader stdInput = new BufferedReader(new
InputStreamReader(p.getInputStream()));
             String s = "";
             BufferedReader stdError = new BufferedReader(new
      InputStreamReader(p.getErrorStream()));
             while ((s = stdInput.readLine()) != null) {
             System.out.println ("<br>line of input is: " + s);
             StringTokenizer tr = new StringTokenizer(s," ", true );
             String t = tr.nextToken();
             System.out.println("<br>token is: "+ t);
             for (int i = 0; i < existingfiles.size(); i++) {

                 //Comparing filenames obtained from directory with
those obtained from file input fields.

                if (t.equals(existingfiles.get(i).toString()))  {
                 samefile = "yes";
                 } else {
                 samefile = "no";
                 }
             }
           }
         }   catch (IOException e) {
             System.out.println("exception:  ");
             e.printStackTrace();
             System.exit(-1);
          }
return samefile;
  }
}

--
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, e-mail:
<mailto:[EMAIL PROTECTED]>
For additional commands, e-mail:
<mailto:[EMAIL PROTECTED]>



--
To unsubscribe, e-mail:   <mailto:[EMAIL PROTECTED]>
For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>

Reply via email to