I am trying to implement an HTML5 input field that lets the user select multiple files to upload. I have the following in my form:
<form method="post" enctype="multipart/form-data" action="index.cfm">
<input type="file" name="Images" id="Images" multiple="multiple" accept="image/jpeg, image/gif, image/png, application/zip" />
...
I am able to select multiple files in the browser, then click upload, but I'm not sure how to handle the form post with ColdFusion. I thought the following would work, but this only uploads the last file I selected:
<cfloop list="#attributes.Images#" index="Image">
<cffile
destination = "#ExpandPath(Trim(request.TempFolder))#"
filefield = "Images"
action = "upload"
nameconflict = "MakeUnique"
result = "UploadedTempFile"
>
<cfoutput>#UploadedTempFile.serverFile#<br /></cfoutput>
</cfloop>
Can someone explain to me how to loop through all the files submitted through my one form field so I can handle the files individually?
UPDATE: As of ColdFusion 9 this was true. This has been corrected in ColdFusion 10.
So to wrap up our comment conversation:
This simply isn't possible with default ColdFusion behavior. cffile
doesn't support handling multiple file uploads from a single file
element. I think it could potentially be possible to fallback to JAVA to do this, but I wouldn't have a clue how to make that happen.
I would love cffile action="uploadall"
to grab all HTML5 multi-file elements. Will need to file that as an ER for CF10 :).