payfrit-works/api/setup/testUpload.cfm
2026-01-14 22:28:16 -08:00

85 lines
3.3 KiB
Text

<cfsetting showdebugoutput="false">
<cfsetting enablecfoutputonly="true">
<cfcontent type="application/json; charset=utf-8" reset="true">
<cfset response = structNew()>
<cfset response["OK"] = false>
<cftry>
<!--- Step 1: Check form fields --->
<cfset response["step"] = "checking form fields">
<cfset formFields = form.keyArray()>
<cfset response["formFields"] = formFields>
<!--- Step 2: Find file fields --->
<cfset response["step"] = "finding file fields">
<cfset uploadedFiles = arrayNew(1)>
<cfloop array="#formFields#" index="fieldName">
<cfif reFindNoCase("^file[0-9]+$", fieldName)>
<cfset arrayAppend(uploadedFiles, fieldName)>
</cfif>
</cfloop>
<cfset response["uploadedFiles"] = uploadedFiles>
<cfif arrayLen(uploadedFiles) EQ 0>
<cfthrow message="No files found">
</cfif>
<!--- Step 3: Create temp directory --->
<cfset response["step"] = "creating temp dir">
<cfset uploadDir = getTempDirectory() & "test_uploads/">
<cfif NOT directoryExists(uploadDir)>
<cfdirectory action="create" directory="#uploadDir#">
</cfif>
<cfset response["uploadDir"] = uploadDir>
<!--- Step 4: Upload first file --->
<cfset response["step"] = "uploading file">
<cfset fieldName = uploadedFiles[1]>
<cffile action="upload" destination="#uploadDir#" filefield="#fieldName#"
accept="image/jpeg,image/png,image/gif,image/webp,application/pdf"
nameconflict="makeunique" result="uploadResult">
<cfset response["uploadResult"] = uploadResult.fileWasSaved>
<cfset response["serverFile"] = uploadResult.serverFile>
<cfset response["serverFileExt"] = uploadResult.serverFileExt>
<!--- Step 5: Read the file --->
<cfset response["step"] = "reading file">
<cfset filePath = uploadResult.serverDirectory & "/" & uploadResult.serverFile>
<cfset response["filePath"] = filePath>
<cfset response["fileExists"] = fileExists(filePath)>
<!--- Step 6: Try image operations --->
<cfset fileExt = lCase(uploadResult.serverFileExt)>
<cfif listFindNoCase("jpg,jpeg,png,gif,webp", fileExt)>
<cfset response["step"] = "reading image">
<cfimage action="read" source="#filePath#" name="img">
<cfset response["imageWidth"] = img.width>
<cfset response["imageHeight"] = img.height>
<cfset response["step"] = "converting to base64">
<cffile action="readbinary" file="#filePath#" variable="fileContent">
<cfset base64Content = toBase64(fileContent)>
<cfset response["base64Length"] = len(base64Content)>
</cfif>
<!--- Step 7: Cleanup --->
<cfset response["step"] = "cleanup">
<cffile action="delete" file="#filePath#">
<cfset response["OK"] = true>
<cfset response["step"] = "complete">
<cfcatch type="any">
<cfset response["MESSAGE"] = cfcatch.message>
<cfif len(cfcatch.detail)>
<cfset response["DETAIL"] = cfcatch.detail>
</cfif>
<cfif structKeyExists(cfcatch, "tagContext") AND arrayLen(cfcatch.tagContext) GT 0>
<cfset response["DEBUG_LINE"] = cfcatch.tagContext[1].line>
<cfset response["DEBUG_TEMPLATE"] = cfcatch.tagContext[1].template>
</cfif>
</cfcatch>
</cftry>
<cfoutput>#serializeJSON(response)#</cfoutput>