2017-09-01 82 views
0

編輯:替換文本區域中的base64字符串與URL。 textarea是一個所見即所得的編輯器(CKEditor)。我需要將圖像上傳到服務器文件系統。我試圖使用此代碼將字符串轉換爲實際圖像,然後在textarea中用服務器(URL)上的圖像位置替換base64字符串。Coldfusion搜索HTML <textarea>然後隱藏Base64字符串到服務器上的文件

<cfset image = imageReadBase64(#LocalOccurrence#)> 
<cfimage source="#image#" 
     destination="#save_image_to_this_location# 
     & #name_of_image# 
     & #extension_of_image#" 
     action="write"> 

原題: 使用ColdFusion,想找到所有的base64圖像串內的HTML,然後每次保存在服務器上它自己的文件,創建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> 

回答

0

有很多方法可以解決這個問題。可能與正則表達式是最好的,但我無法得到這個工作的簡單例子。或者,您可以在找到它們時替換字符串中的事件,並繼續查看,直到沒有任何事件發生。

你必須做更多的工作比錯誤檢查/驗證等,但這裏有一個基本的例子。 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#"> 
+0

這太棒了!你能指出我如何創建一個URL來取代base64字符串的方向嗎?我考慮使用replace(),但是,我想我只需要使用你在這裏給我的東西,並設置一個變量到一個URL。我想這樣的:<---這個替換數據:圖像/ PNG; BASE64,具有URL ---> –

+0

不能完全確定我明白你的」再問。如果你編輯你的問題,並添加更多的細節這部分,我敢打賭,我們可以解決它。 – luxdvie