编辑:用URL替换TextAarea中的base64字符串。Textarea是Wysiwyg编辑(CKEditor)。我需要将图像上传到服务器文件系统。我正在尝试使用此代码将字符串转换为实际映像,然后在TextAarea中使用Server上图像的位置替换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>
重新编写原始循环以使其看起来像这样,但它仅返回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>
您可以采用多种方法。尽管我无法获得这个工作的简单示例,但可能会有正则是最好的。或者,当您找到字符串时,您可以替换字符串中的出现,并继续寻找直到剩下。
您必须做更多的工作,以进行错误检查/验证等,但这是一个基本示例。这是一个完整的例子。
<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#">