file upload strange issue with size and extension
I am currently working on a script that will allow users to upload images,
nothing too sophisticated just a few simple lines of code. Anyway, last
night everything was working like a charm and now surprise surprise,
strange things started happening out of the blue for who knows what
reason. That said, it's important to note that I am asynchronously passing
values using jQuery Form Plugin and that part has been working flawlessly
hence I will not post that part of the code.
here is the cfc component code:
<cfcomponent output="false">
<cffunction name="test" access="remote" output="false">
<cfparam name="form.title" type="string" default="">
<cfparam name="form.File" type="string" default="">
<cfset add.Msg = ArrayNew(1)>
<!---check if text is added and whether it contains more than 15
characters--->
<cfif len (trim(form.title)) is 0>
<cfset ArrayAppend(add.Msg,"plese enter some text")>
<cfelseif len (trim(form.title)) lt 15>
<cfset ArrayAppend(add.Msg,"text should be at least 15 characters
long")>
</cfif>
<!---check if text contains special characters--->
<!--additionally we can allow other characters-->
<cfif refind ("[^A-Z a-z 0-9\\+]+", form.title) and len
(trim(form.title)) gte 15>
<cfset ArrayAppend(add.Msg,"your post can not conatin special
characters")>
</cfif>
<!---check to see if file has been submited--->
<cfif len(form.File) is 0>
<cfset ArrayAppend(add.Msg,"you haven't selected a file")>
</cfif>
<!---if there are no errors try to upload file to temp--->
<cfif ArrayLen (add.Msg) is 0>
<cftry>
<cffile action="upload" nameconflict="makeunique"
destination="#GetTempDirectory()#" filefield="File">
<!---check file size--->
<cfif (CFFILE.FileSize GT (100 * 1024))>
<cfset ArrayAppend(add.Msg,"#CFFILE.FileSize#you can not
upload files bigger than 1MB")>
<!---try to delete the file--->
<cftry>
<cffile action="delete"
file="#CFFILE.ServerDirectory#\#CFFILE.ServerFile#">
<cfcatch>
<!--we dan catch an error , though it would crash the page-->
</cfcatch>
</cftry>
</cfif>
<!---check file extension with aditional layer of protection
for just in case--->
<cfif not ListFindnoCase("jpg,jpeg,png,gif",CFFILE.ServerFileExt)
or not isImageFile("#GetTempDirectory()##CFFILE.ServerFile#")>
<cfset ArrayAppend(add.Msg,"#CFFILE.ServerFileExt#you can
only upload jpg,png or gif images.")>
<!---try to delete the file--->
<cftry>
<cffile action="delete"
file="#CFFILE.ServerDirectory#\#CFFILE.ServerFile#">
<cfcatch>
<!--again we can catch an error, though it would crash the
page-->
</cfcatch>
</cftry>
</cfif>
<cfcatch>
<!--if there was an error we could log it, though that would crash
the page-->
</cfcatch>
</cftry>
</cfif>
<cfif ArrayLen (add.Msg) is 0>
<cfset ArrayAppend(add.Msg,"#CFFILE.ServerFile# - yay! success")>
</cfif>
<cfreturn serializeJSON(add.Msg)>
</cffunction>
as you can see it's a simple validation that should work and has worked as
I mentioned last night. Now I am having issues with file size and file
format validation. That said, whatever I try it returns that file is
bigger that 1M and that it's not a correct type, even though I select
300kb file, jpg or png. as you can see i added #CFFILE.FileSize# and
#CFFILE.ServerFileExt# to those to error msgs and file is there, it's less
than 1MB in size and its correct type. So, WTF is going on here? I would
really appreciate your help on this one, if you have any suggestions on
how to fix this or how to improve my code.
No comments:
Post a Comment