[Gambas-user] Use of Request.Files in gb.web
Benoit Minisini
gambas at ...1...
Fri Sep 14 17:17:58 CEST 2007
On vendredi 14 septembre 2007, José Luis Redrejo wrote:
> 2007/9/14, Benoit Minisini <gambas at ...1...>:
> > On vendredi 14 septembre 2007, José Luis Redrejo wrote:
> > > 2007/9/14, Benoit Minisini <gambas at ...1...>:
> > > > On vendredi 14 septembre 2007, José Luis Redrejo wrote:
> > > > > Hi, Benoît,
> > > > > Fighting with gb.web and its lack of documentation,
> > > > > I'm trying to use Request.Files to get an uploaded file, but I'm
> >
> > not
> >
> > > > able
> > > >
> > > > > to recover the file.
> > > > > Could you give a few lines of code with an example? or just a tip
> > > > > to can
> > > >
> > > > go
> > > >
> > > > > on...
> > > > >
> > > > > Regards.
> > > >
> > > > Of course:
> > > >
> > > > If in your form, you have the following file field:
> > > >
> > > > <form ...>
> > > > ...
> > > > <input type="file" name="filename">
> > > > ...
> > > > </form>
> > > >
> > > > then gb.web will store the uploaded file in the process temporary
> > > > directory,
> > > > and Request.Fields["filename"] will return the path to this temporary
> > > > file.
> > > >
> > > > Of course your form must use method="post", and
> > > > enctype="multipart/form-data".
> > > >
> > > > Is it clearer?
> > >
> > > I must be a little closed minded today.
> > >
> > > I'm using this code:
> > >
> > > PUBLIC SUB Main()
> > > DIM directorio AS String
> > >
> > >
> > > directorio = Request.Path
> > > Response.Begin
> > >
> > > SELECT CASE directorio
> > > CASE "/", ""
> > >
> > > PRINT "<p><h3>" & ("Example") & "</h3><p>"
> > > PRINT "<form action=\"" & Application.root & "/enviar\"
> > > method=\"POST\" enctype=\"multipart/form-data\">"
> > > PRINT "Archivo de datos: <input name=\"filename\"
> >
> > type=\"file\"><br>"
> >
> > > PRINT "<input name=\"submit\" type=\"submit\">"
> > > PRINT "</form>"
> > >
> > > CASE "/enviar", "/enviar/"
> > >
> > > PRINT "sending"
> > > TRY PRINT "<p>Fields.Count=" & CString(Request.Fields.Count)
> > > TRY PRINT "<p>Fields[0]=" & Request.Fields[0]
> > > TRY PRINT "<p>Fields[filename]=" & Request.Fields["filename"]
> > >
> > > END SELECT
> > >
> > > Response.End
> > >
> > > '----------------
> > > And, after uploading the file, the web browser output is:
> > > sending
> > >
> > > Fields.Count=2
> > >
> > > Fields[0]=filename
> > > '---------------
> >
> > You should see:
> >
> > Fields.Count=2
> > Fields[0]=filename
> > Fields[filename]=
> >
> > If the third line is missing, that means there is an error.
>
> Checking gb.web component code, Fields is returned from the $aField
> variable that's defined as a String[], so if it's an array,
> Fields["filename"] is not possible, it needs an integer as index.
> So, or there's a bug, or that's not to be used the way you remember ...
Oops! Of course...
The right code is:
PRINT Request.Files["filename"]
Regards,
--
Benoit Minisini
More information about the User
mailing list