When using the upload with cffile, it needs a form field name - what you are passing in is the form field value. Please see this link for the exact method to achieve what you are trying to do.
CFFILE Upload in a CFC
I keep seeing people get tripped up over this, so here's what the deal is. The biggest thing you have to remember about cffile's upload is that no matter what, the filefield has to be the name of the form field that you're trying to upload.
Example:
Note the lack of pound signs. That means that you're forcing cffile to go look for form.something and grab the data stream out of it. So, what do you have to do if you put it in a CFC? You can't pass the datastream into a CFC (you can, but that's not the correct way to do it). You have to pass the name of the file field into the cfc instead.
Example CFC:
<cfcomponent name="fileio">
<cffunction name="fileUpload" access="public" returntype="struct">
<cfargument name="fileField" required="true" type="string">
<cfargument name="destination" required="true" type="string">
<cffile action="upload" filefield="#arguments.fileField#" destination="#arguments.destination#">
</cffunction>
</cfcomponent>
Not the pound signs around arguments.fileField. Why? Because you're evaluating the value of arguments.fileField which is actually a string: 'form.something'. Example usage would be:
<cfscript>
fileObj = createObject('component','fileio');
fileObj.fileUpload('form.something','c:\');
</cfscript>