Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > comp.lang.php > #4337
| From | "Álvaro G. Vicario" <alvaro.NOSPAMTHANX@demogracia.com.invalid> |
|---|---|
| Newsgroups | comp.lang.php |
| Subject | Re: form - file - sumple question |
| Date | 2012-01-09 09:38 +0100 |
| Organization | http://alvaro.es/ |
| Message-ID | <jee91o$g00$1@dont-email.me> (permalink) |
| References | <4f08514c$0$5038$ba620e4c@news.skynet.be> |
El 07/01/2012 15:06, Leo Decap escribió/wrote:
> I have a form which users can fill in.
> If the user hasn't filled in a required field, the form reloads after
> the Submit with all the data the user has entered filled in (and the
> opportunity to fill in the missing data).
> I get the data through $_POST and echo the allready filled in data on
> the form. Easy.
>
> I have 1 field - type File - where the user can choose a photo to upload.
> On reload of the form, I would love to see the entered data (path?)
> reappear, but I can't figure out how to do this..........
This approach hits against two walls:
1. The $_FILES array does not contain the original path, mainly because
the browser does not send it to the server.
2. Most browsers ignore pre-filled <input type="file"> elements.
Additionally, you have no control about the uploaded file size until the
file is actually received. If you force the user to upload the file
again and it happens to be a large file, your form can become pretty
unusable.
You need to use a different technique. The simplest one is to move
successfully uploaded files to a temporary location you control and link
them to your form through a reasonably large random ID (so it cannot be
guessed) that can be transmitted through a set of <input type="hidden">
fields.
E.g., if the original $_FILES entry is this:
array(1) {
["avatar"]=>
array(5) {
["name"]=>
string(10) "Logo01.gif"
["type"]=>
string(9) "image/gif"
["tmp_name"]=>
string(27) "C:\WINDOWS\Temp\php1728.tmp"
["error"]=>
int(0)
["size"]=>
int(732)
}
}
... you can use uniqid('tmp_') to generate a random name and save your
file as:
C:\Sites\example.com\temp\tmp_4f0aa7072cb3e
... and add this to your form:
<input type="hidden" name="avatar[id]" value="tmp_4f0aa7072cb3e">
<input type="hidden" name="avatar[name]" value="Logo01.gif">
<input type="hidden" name="avatar[type]" value="image/gif">
When all the entered data is correct, you can move the temporary file to
its definitive location.
--
-- http://alvaro.es - Álvaro G. Vicario - Burgos, Spain
-- Mi sitio sobre programación web: http://borrame.com
-- Mi web de humor satinado: http://www.demogracia.com
--
Back to comp.lang.php | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread
form - file - sumple question Leo Decap <fcatus@yahoo.com> - 2012-01-07 15:06 +0100
Re: form - file - sumple question Jerry Stuckle <jstucklex@attglobal.net> - 2012-01-07 09:09 -0500
Re: form - file - sumple question Thomas 'PointedEars' Lahn <PointedEars@web.de> - 2012-01-07 15:40 +0100
Re: form - file - sumple question Luuk <Luuk@invalid.lan> - 2012-01-07 15:40 +0100
Re: form - file - sumple question Jerry Stuckle <jstucklex@attglobal.net> - 2012-01-07 09:53 -0500
Re: form - file - sumple question Luuk <Luuk@invalid.lan> - 2012-01-07 16:24 +0100
Re: form - file - sumple question Thomas 'PointedEars' Lahn <PointedEars@web.de> - 2012-01-07 15:39 +0100
Re: form - file - sumple question "M. Strobel" <sorry_no_mail_here@nowhere.dee> - 2012-01-07 16:10 +0100
Re: form - file - sumple question Leo Decap <fcatus@yahoo.com> - 2012-01-07 16:24 +0100
Re: form - file - sumple question Jonathan Stein <jstein@image.dk> - 2012-01-08 16:41 +0100
Re: form - file - sumple question "Álvaro G. Vicario" <alvaro.NOSPAMTHANX@demogracia.com.invalid> - 2012-01-09 09:38 +0100
Re: form - file - sumple question "Peter H. Coffin" <hellsop@ninehells.com> - 2012-01-10 13:02 -0600
csiph-web