Skip to main content
June 19, 2009
Question

using HTML input type = "file"

  • June 19, 2009
  • 2 replies
  • 617 views

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?

    This topic has been closed for replies.

    2 replies

    ilssac
    Inspiring
    June 19, 2009

    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>

    June 19, 2009

    Ah, thanks guys, that would explain why I can't find a way of doing it. Cool, I'll do the workarounds you suggest.

    Inspiring
    June 19, 2009

    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.