Copy link to clipboard
Copied
I'm creating an input form for users so that they can input various bits of info into a db. One of the fields is so that they can upload a file, which puts the file onto the web server and the path to it into the db. The problem is if anyone edits the data after a file has been uploaded, the path to the file gets overwritten in the db with an empty string. I get round this problem in all other entry fields by pulling the data out the db and putting in the form entry box, but can't find a way to do this using the input type = "file" tag. Does anyone know how to do this?
Copy link to clipboard
Copied
Use if/else logic on the form page to only display the file input if the intent is to insert new records.
On your action page, if you are updating, don't update the field with the path to the file.
Copy link to clipboard
Copied
The HTML standard makes it illeagal for you to populate a file field with any value. This is for security reasons. If developers could do this, it would be even easier for not nice developers to create web sites that could populate forms with file names for well known, sensitive files and steal user data.
You have to account for this in your action page. Simply check the file field for a value before updating the database. If it does not contain a value, then don't include that field in the SQL update statement.
<cfquery...>
...
<cfif len(trim(form.fileNameField)) GT 0>
databaseFileField = #fileNameValue#
</cfif>
...
</cfquery>
Copy link to clipboard
Copied
Ah, thanks guys, that would explain why I can't find a way of doing it. Cool, I'll do the workarounds you suggest.