Pastie now auto-senses if line-wrap is a bad or good idea. Feedback?
## mark a section (Learn more)
<cfif StructKeyExists(FORM, "submit")> <cfparam name = "FORM.skipFirst" default = "0" /> <cffile action = "upload" fileField = "csv" destination = "#GetTempDirectory()#" nameConflict = "overwrite" accept = "text/plain, text/csv, text/comma-separated-values, application/octet-stream, application/vnd.ms-excel" /> <cfset fileName = cffile.clientFilename /> <cfset fileExt = cffile.clientFileExt /> <!--- read the file line by line to avoid running out of memory ---> <cfset filePath = "#GetTempDirectory()##fileName#.#fileExt#" /> <cfset fileReader = CreateObject("java", "java.io.FileReader").Init(JavaCast("string", filePath)) /> <cfset bufferedReader = CreateObject("java", "java.io.BufferedReader").Init(fileReader) /> <cfset lineReader = CreateObject("java", "java.io.LineNumberReader" ).Init(bufferedReader) /> <cfset request.lineData = lineReader.readLine() /> <cfloop condition="StructKeyExists(request, 'lineData')"> <cfset lineNum = lineReader.GetLineNumber() /> <cfif form.skipFirst EQ 1 AND lineNum EQ 1> <!--- this is the only way I could get this to work... ---> <cfset request.lineData = lineReader.readLine() /> </cfif> <!--- after every 25 lines, clean up the garbage ---> <cfif lineNum % 25 EQ 0> <cfset runtime = CreateObject("java", "java.lang.Runtime").getRuntime() /> <cfset runtime.gc() /> </cfif> <cfset vals = ListToArray(request.lineData) /> <cfset Model.updateAttribute(URL.id, vals) /> <cfset request.lineData = lineReader.readLine() /> </cfloop> <!--- this is causing trouble <cffile action = "delete" file = "#GetTempDirectory()##fileName#.#fileExt#" /> ---> <cfset flash("notice", "Your update was successful.") /> <cflocation url = "?page=#URL.page#&action=browse&id=#URL.id#" /> </cfif>
This paste will be private.
From the Design Piracy series on my blog: