Coldfusion Search HTML <textarea> 然后将 Base64 字符串转换为服务器上的文件
Coldfusion Search HTML <textarea> Then Covert Base64 String To File On Server
编辑: 将文本区域中的 base64 字符串替换为 URL。文本区域是一个所见即所得的编辑器(CKEditor)。我需要将图像上传到服务器文件系统。我正在尝试使用此代码将字符串转换为实际图像,然后在文本区域中将 base64 字符串替换为服务器上图像的位置 (URL)。
<cfset image = imageReadBase64(#LocalOccurrence#)>
<cfimage source="#image#"
destination="#save_image_to_this_location#
& #name_of_image#
& #extension_of_image#"
action="write">
原题:
使用 ColdFusion,我试图在 HTML 中找到所有 base64 图像字符串,然后将每个字符串作为自己的文件保存在服务器上,创建 URL,然后插入数据库。我现在需要帮助制作一个循环。
到目前为止,我使用以下代码找到了一次 base64 字符串:
<cfset textarea_to_search = #form.overview_text#>
<cfset string_base64_header = "base64,">
<cfset string_base64_ending = '"'>
<cfoutput>
<cfset mystart = find(#string_base64_header#, #textarea_to_search#)>
<cfset myend = find(#string_base64_ending#,#textarea_to_search#,#mystart#)>
<cfset my64 = mid(#textarea_to_search#, (#mystart#+7), ((#myend#-7)-#mystart#))>
<span style=font-size:8px;"> #mystart#, #myend#, #my64#</span>
</cfoutput>
将原始循环重写为如下所示,但它仅 returns 第一次出现 base64 字符串:
<cfset counter = 1>
<cfset my_array =[]>
<cfoutput>
<cfloop condition = "counter LTE 5">
<cfset mystart = find(#string_base64_header#, #textarea_to_search#)>
<cfset myend = find(#string_base64_ending#,#textarea_to_search#,#mystart#)>
<cfset my64 = mid(#textarea_to_search#, (#mystart#+7), ((#myend#-7)-#mystart#))>
<span style=font-size:8px;"> #mystart#, #myend#, #my64#</span>
<cfset ArrayAppend(my_array, #my64#)>
<cfset counter = counter+1>
</cfloop>
<cfdump var = "#my_array#">
</cfoutput>
您可以通过多种方式解决此问题。可能使用正则表达式是最好的,尽管我无法得到一个简单的例子来说明这个工作。或者,您可以在找到它们时替换字符串中出现的位置,并继续查找直到剩下 none。
对于错误检查/验证等,您必须做比这更多的工作,但这是一个基本示例。 Here's the full example.
<cfset Base64Header = "base64,">
<cfset Base64Ending = '"'>
<cfset ResultsArray =[]>
<cfset ContinueSearching = true>
<cfloop condition = " ContinueSearching eq true "><cfoutput>
<cfset StartingIndex = find( Base64Header, SearchText)>
<cfif StartingIndex eq 0>
<cfset ContinueSearching = false>
<cfcontinue/>
</cfif>
<cfset EndingIndex = find( Base64Ending , SearchText, StartingIndex )>
<cfset FullOccurrence = mid(#SearchText#, (#StartingIndex#), ((#EndingIndex#)-#StartingIndex#))>
<cfset LocalOccurrence = mid(#SearchText#, (#StartingIndex#+7), ((#EndingIndex#-7)-#StartingIndex#))>
<cfset ArrayAppend(ResultsArray, #LocalOccurrence#)>
<cfset SearchText = replace(SearchText, FullOccurrence, "")>
<cfset StartingIndex = 0>
</cfoutput></cfloop>
<cfdump var = "#ResultsArray#">
编辑: 将文本区域中的 base64 字符串替换为 URL。文本区域是一个所见即所得的编辑器(CKEditor)。我需要将图像上传到服务器文件系统。我正在尝试使用此代码将字符串转换为实际图像,然后在文本区域中将 base64 字符串替换为服务器上图像的位置 (URL)。
<cfset image = imageReadBase64(#LocalOccurrence#)>
<cfimage source="#image#"
destination="#save_image_to_this_location#
& #name_of_image#
& #extension_of_image#"
action="write">
原题: 使用 ColdFusion,我试图在 HTML 中找到所有 base64 图像字符串,然后将每个字符串作为自己的文件保存在服务器上,创建 URL,然后插入数据库。我现在需要帮助制作一个循环。
到目前为止,我使用以下代码找到了一次 base64 字符串:
<cfset textarea_to_search = #form.overview_text#>
<cfset string_base64_header = "base64,">
<cfset string_base64_ending = '"'>
<cfoutput>
<cfset mystart = find(#string_base64_header#, #textarea_to_search#)>
<cfset myend = find(#string_base64_ending#,#textarea_to_search#,#mystart#)>
<cfset my64 = mid(#textarea_to_search#, (#mystart#+7), ((#myend#-7)-#mystart#))>
<span style=font-size:8px;"> #mystart#, #myend#, #my64#</span>
</cfoutput>
将原始循环重写为如下所示,但它仅 returns 第一次出现 base64 字符串:
<cfset counter = 1>
<cfset my_array =[]>
<cfoutput>
<cfloop condition = "counter LTE 5">
<cfset mystart = find(#string_base64_header#, #textarea_to_search#)>
<cfset myend = find(#string_base64_ending#,#textarea_to_search#,#mystart#)>
<cfset my64 = mid(#textarea_to_search#, (#mystart#+7), ((#myend#-7)-#mystart#))>
<span style=font-size:8px;"> #mystart#, #myend#, #my64#</span>
<cfset ArrayAppend(my_array, #my64#)>
<cfset counter = counter+1>
</cfloop>
<cfdump var = "#my_array#">
</cfoutput>
您可以通过多种方式解决此问题。可能使用正则表达式是最好的,尽管我无法得到一个简单的例子来说明这个工作。或者,您可以在找到它们时替换字符串中出现的位置,并继续查找直到剩下 none。
对于错误检查/验证等,您必须做比这更多的工作,但这是一个基本示例。 Here's the full example.
<cfset Base64Header = "base64,">
<cfset Base64Ending = '"'>
<cfset ResultsArray =[]>
<cfset ContinueSearching = true>
<cfloop condition = " ContinueSearching eq true "><cfoutput>
<cfset StartingIndex = find( Base64Header, SearchText)>
<cfif StartingIndex eq 0>
<cfset ContinueSearching = false>
<cfcontinue/>
</cfif>
<cfset EndingIndex = find( Base64Ending , SearchText, StartingIndex )>
<cfset FullOccurrence = mid(#SearchText#, (#StartingIndex#), ((#EndingIndex#)-#StartingIndex#))>
<cfset LocalOccurrence = mid(#SearchText#, (#StartingIndex#+7), ((#EndingIndex#-7)-#StartingIndex#))>
<cfset ArrayAppend(ResultsArray, #LocalOccurrence#)>
<cfset SearchText = replace(SearchText, FullOccurrence, "")>
<cfset StartingIndex = 0>
</cfoutput></cfloop>
<cfdump var = "#ResultsArray#">