commons-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Dakota Jack <dakota.j...@gmail.com>
Subject Re: [FileUpload] Getting wrong filename from FileItem
Date Fri, 06 May 2005 14:55:56 GMT
The File class definitely does not "take the local file separator",
Mihael.  It normalizes the String, which does not include a file
separator at all.  Either the normalization is not working, which
would be very odd, or your errors in the file name are what is causing
the problem.  At least that is what I think.  My setup worked with
your code, however, so I don't know what is up.

Anyone have an idea on this?

On 5/6/05, Mihael Knezevic <m.knezevic@porta.de> wrote:
> got some time for the testing now.
> 
> my test env:
> Debian GNU/Linux 3.0 Sarge
> Java HotSpot(TM) Client VM (build 1.4.2_06-b03, mixed mode)
> 
> my code:
> System.out.println("-------- Test ----------");
> System.out.println("Windows file name: " + new
> File("C\\Windows\\Temp\\myfile.txt").getName());
> System.out.println("Linux file name: " + new
> File("/tmp/myfile.txt").getName());
> System.out.println("-------- End  ----------");
> 
> my output:
> -------- Test ----------
> Windows file name: C:\Windows\Temp\myfile.txt
> Linux file name: myfile.txt
> -------- End  ----------
> 
> and it is as i expected. it takes the local file separator which is not in the
> windows file name. so it returns the absolute file name IMO.
> 
> Am Freitag, 6. Mai 2005 09:54 schrieb Dakota Jack:
> > I tested it out on both file separators (linux and microsoft) and it
> > works on both.  Just run a test and see if it works.  It does
> >
> >
> > public class Test {
> >   public static void main(String [] params) {
> >     File ie = new File("C:\\mydir\\myfile.txt");
> >     File linux = new File("/mydir/myfile.txt");
> >     StdOut.log("log.development","Test ttf ie.getName() = " + ie.getName());
> >     StdOut.log("log.development","Test ttf linux.getName() = " +
> > linux.getName());
> > }
> >
> > You should just use System.out.println() of course.
> >
> >
> > On 5/6/05, Knezevic, Mihael <m.knezevic@porta.de> wrote:
> > > i can not figure out how this should work. this is a web application.
> linux and windows clients are accessing the app. the filename can
> be /mydir/myfile.txt and C:\mydir\myfile.txt. how should the server know
> which file separator to use. hmm. i could take a look at the http request
> data. ain't there a field for the operating system. but that ain't something
> i like to do. these things are always changing.
> > >
> > > i'll try your code later. thanks.
> > >
> > > > -----Urspr√ľngliche Nachricht-----
> > > > Von: Dakota Jack [mailto:dakota.jack@gmail.com]
> > > > Gesendet: Freitag, 6. Mai 2005 09:34
> > > > An: Jakarta Commons Users List
> > > > Betreff: Re: [FileUpload] Getting wrong filename from FileItem
> > > >
> > > > This code should definitely work.  If it does not, I sure
> > > > would like to know what happens.  What did happen?  Did you debug it?
> > > >
> > > >
> > > >
> > > > On 5/6/05, Knezevic, Mihael <m.knezevic@porta.de> wrote:
> > > > >
> > > > >
> > > > > > -----Urspr√ľngliche Nachricht-----
> > > > > > Von: Dakota Jack [mailto:dakota.jack@gmail.com]
> > > > > > Gesendet: Freitag, 6. Mai 2005 08:51
> > > > > > An: Jakarta Commons Users List; Knezevic, Mihael
> > > > > > Betreff: Re: [FileUpload] Getting wrong filename from FileItem
> > > > > >
> > > > > > Just so there is no misunderstanding, the browsers have
> > > > nothing to
> > > > > > do with what getName returns.  The browsers differ in
> > > > what name they
> > > > > > provide for the file.  Thus, when you get a File object for
IE it
> > > > > > gives the full name and for the others the actual file
> > > > name itself.
> > > > > thanks for the extra explanation. it's what i understood in
> > > > the first place (no offense on this one).
> > > > >
> > > > >
> > > > > > You make them all the same if you change commonsupload to give
you
> > > > > > file,getName() rather than just file.
> > > > > >
> > > > > >
> > > > > >
> > > > > >     // Just add this to the "protected String getFileName(Map
> > > > > > headers)" method in FileUploadBase
> > > > > >     if(fileName != null) {
> > > > > >       fileName = new java.io.File(fileName).getName();
> > > > > >     }
> > > > >
> > > > > tried that in the first place in my programm. but as the
> > > > filename is something like C:\mydir\myfile.txt (windows file
> > > > path) it doesn't seem to work on the linux server i'm
> > > > running. file separators are different. correct me if i'm wrong.
> > > > >
> > > > > windows client (ie) returns C:\mydir\myfile.txt to my linux
> > > > server. on linux the file separator is a slash ( / ) and not
> > > > a backslash ( \ ). so my linux server searches for a slash in
> > > > the full filename to get just the filename. but there is
> > > > none. so it assumes it is the filename and returns it all.
> > > > >
> > > > > >
> > > > > >
> > > > > > On 5/5/05, Mihael Knezevic <m.knezevic@porta.de> wrote:
> > > > > > > thanks to all the responses for my question.
> > > > > > >
> > > > > > > actually i didn't know that it was a browser "thing". i
> > > > > > thought it was
> > > > > > > an operating system thing. thanks for clearing this up.
and
> > > > > > as this is
> > > > > > > a browser specific thing IMHO there should be just a
> > > > change in the
> > > > > > > docu where you should add the fact that the IE is not behaving
> > > > > > > like any other browser with the method getName. that would
be of
> > > > > > much help.
> > > > > > >
> > > > > > > and this is the kind of "feature" i don't like of MS software.
> > > > > > >
> > > > > > > Am Mittwoch, 4. Mai 2005 22:02 schrieb Frank W. Zammetti:
> > > > > > > > I know, I've run into this myself... But, it should
> > > > be a fairly
> > > > > > > > trivial exercise to write code to extract just the
> > > > filename (as
> > > > > > > > I believe you've done).  This makes sense to me as
an
> > > > additional
> > > > > > > > method.  That way no existing code gets broken, but
newer
> > > > > > code can
> > > > > > > > use the new method, which works as getName() probably
should
> > > > > > > > have been working all along anyway (IMHO).
> > > > > > > >
> > > > > > > > Frank
> > > > > > > >
> > > > > > > > Dakota Jack wrote:
> > > > > > > > > The data difference is not in the code but in
the
> > > > request data
> > > > > > > > > from the browser.  IE puts in the full name and
other
> > > > > > browsers put
> > > > > > > > > in just the name.  Calling [file].getName() gives
the
> > > > > > same result
> > > > > > > > > for all of them.  I don't think there is a way
to get a
> > > > > > full name
> > > > > > > > > from the browsers that send only the file name.
> > > > There is no
> > > > > > > > > reason, of course, to know the full name.
> > > > > > > > >
> > > > > > > > > On 5/4/05, Frank W. Zammetti <fzlists@omnytex.com>
wrote:
> > > > > > > > >
> > > > > > > > >>It seems to me a method to get JUST the filename
makes
> > > > > > a lot of sense...
> > > > > > > > >>what has been the reason for not adding it
IN ADDITION
> > > > > > to what's
> > > > > > > > >>there now?  Unfortunately it would make more
sense if
> > > > > > > > >>getName() returned just the name while there
was another
> > > > > > > > >>method, maybe
> > > > > > > > >>getFullName() that returned what getName()
returns now,
> > > > > > but that
> > > > > > > > >>breaks existing code potentially, so I can
certainly
> > > > > > see why that
> > > > > > > > >>hasn't been done, but adding something like
> > > > getJustTheName()
> > > > > > > > >>or something (obviously there must be a better
choice!)
> > > > > > makes sense to me.
> > > > > > > > >>
> > > > > > > > >>Frank
> > > > > > > > >>
> > > > > > > > >>Dakota Jack wrote:
> > > > > > > > >>
> > > > > > > > >>>That is an excellent point, Robert.  I
often forget
> > > > > > how horrible
> > > > > > > > >>>it must be to be immeshed in those programming
worlds
> > > > > > where there
> > > > > > > > >>>is no recourse.  Too often we shy away,
I think,
> > > > at changing
> > > > > > > > >>>code, even with the Java distribution
itself, license
> > > > > > issues notwithstanding.
> > > > > > > > >>>
> > > > > > > > >>>On 5/4/05, robert burrell donkin
> > > > > > > > >>><robertburrelldonkin@blueyonder.co.uk>
> > > > > > > wrote:
> > > > > > > > >>>
> > > > > > > > >>>
> > > > > > > > >>>>On Wed, 2005-05-04 at 10:26 -0700,
Dakota Jack wrote:
> > > > > > > > >>>>
> > > > > > > > >>>>
> > > > > > > > >>>>>Some people think this is a bug
and some people
> > > > > > think that this
> > > > > > > > >>>>>is a feature.
> > > > > > > > >>>>
> > > > > > > > >>>><snip>
> > > > > > > > >>>>
> > > > > > > > >>>>>That is not a problem, however.
 I just went in and
> > > > > > changed the
> > > > > > > > >>>>>commons upload code adding .getName()
to the
> > > > file at this
> > > > > > > > >>>>>stage.  The problem you are seeing
is in
> > > > Internet Explorer,
> > > > > > > > >>>>>right?  Firefox and Netscape return
the file name
> > > > > > and Internet
> > > > > > > > >>>>>Explorer returns the full path.
 Anyway, you
> > > > either have to
> > > > > > > > >>>>>solve the problem in the commons
upload code itself,
> > > > > > where it
> > > > > > > > >>>>>is easy to solve, or to go through
some wasted
> > > > > > mechanisms after
> > > > > > > > >>>>>the fact.  Everyone has to solve
this problem
> > > > > > somewhere, so I
> > > > > > > > >>>>>definitely come down on the side
of "bug" versus
> > > > "feature".
> > > > > > > > >>>>
> > > > > > > > >>>>the great thing about open source
is that you are
> > > > free to do
> > > > > > > > >>>>exactly this :)
> > > > > > > > >>>>
> > > > > > > > >>>>- robert
> > > > > > >
> > > > >
> > > > >
> > > > ---------------------------------------------------------------------
> > > > > To unsubscribe, e-mail: commons-user-unsubscribe@jakarta.apache.org
> > > > > For additional commands, e-mail:
> > > > commons-user-help@jakarta.apache.org
> > > > >
> > > > >
> > > >
> > > >
> > > > --
> > > > "You can lead a horse to water but you cannot make it float
> > > > on its back."
> > > > ~Dakota Jack~
> > > >
> > > > ---------------------------------------------------------------------
> > > > To unsubscribe, e-mail: commons-user-unsubscribe@jakarta.apache.org
> > > > For additional commands, e-mail: commons-user-help@jakarta.apache.org
> > > >
> > > >
> > >
> > > ---------------------------------------------------------------------
> > > To unsubscribe, e-mail: commons-user-unsubscribe@jakarta.apache.org
> > > For additional commands, e-mail: commons-user-help@jakarta.apache.org
> > >
> > >
> >
> >
> > --
> > "You can lead a horse to water but you cannot make it float on its back."
> > ~Dakota Jack~
> >
> > ---------------------------------------------------------------------
> > To unsubscribe, e-mail: commons-user-unsubscribe@jakarta.apache.org
> > For additional commands, e-mail: commons-user-help@jakarta.apache.org
> >
> >
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: commons-user-unsubscribe@jakarta.apache.org
> For additional commands, e-mail: commons-user-help@jakarta.apache.org
> 
> 


-- 
"You can lead a horse to water but you cannot make it float on its back."
~Dakota Jack~

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


Mime
View raw message