Coldfusion 搜索 HTML <textarea> 然后将 Base64 字符串隐蔽到服务器上的文件



编辑:用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#">

最新更新