2015-06-05 8 views
1

A назад назад я отправил вопрос о декодировании строки Base64 в изображение, которое будет храниться в моем приложении ColdFusion. Here's the link.Декодирование Base64 на изображение в ColdFusion

Я получал строку от подписи подписи Topaz, у которой был плагин браузера NAPI, который создал строку Base64. Я бы тогда взять эту строку и использовать следующий код, чтобы расшифровать его:

<cfscript> 
     binaryValue = binaryDecode(form.SigImgData, "hex"); 
     FileWrite("c:\Inetpub\wwwroot\signatures\#fullfilename#.bmp", "#binaryValue#"); 
</cfscript> 

Я бы затем сохранить его на диск и отобразить его в браузере с помощью тега.

Ну, теперь, когда Google Chrome прекратил поддержку плагинов NAPI, теперь я создаю строку Base64, используя JavaScript, поставляемый от производителя подписи. Я могу успешно создать строку Base64 с использованием нового JS, но когда я подключаю строку к тому же самому CFScript-коду сверху, он создает непригодный для использования образ. В основном поврежденный файл изображения.

Вот пример моей строки Base64:

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 

Я нашел сайт, который позволяет вам пройти строку в поле и декодировать его к исходному изображению и, кажется, расшифровать его хорошо.

В соответствии с предложениями, я попытался следующие модификации:

<cfset image = imageReadBase64("data:image/bmp;base64,form.SigImgData")> 
    <cfimage 
    source="#image#" 
    destination="c:\Inetpub\wwwroot\signatures\#fullfilename#.bmp" 
    action="write"> 

Но я получаю следующее сообщение об ошибке:

не может декодировать строку «form.SigImgData». Строка ввода не кодируется base64.

+0

Вы пытались использовать 'imageReadBase64 (form.SigImgData)'? – RRK

ответ

2

По мере двоичные данные не имеют заголовки изображений (Содержит тип пантомимы, например data:image/png;base64 для изображения png), поэтому вы можете просто использовать imageReadBase64 следующим образом:

<cfset image = imageReadBase64(form.SigImgData)> 
<cfimage 
    source="#image#" 
    destination="c:\Inetpub\wwwroot\signatures\#fullfilename#.bmp" 
    action="write"> 

Я пробовал его локально с тем же кодом. Это ваш образ? enter image description here

+0

Я попробовал ваш пример, но получил ошибку coldfusion (входная строка не кодируется base64). Я отправил свой код и точную ошибку в моем исходном вопросе. –

+0

@BrianFleishman См. Мое редактирование. – Beginner

+0

Хорошо, нашел проблему, я исказил мое имя переменной. Все хорошо сейчас. Благодаря! –

2

С строку Base64 вы можете использовать эту функцию, чтобы получить изображение:

ImageReadBase64(yourstring) 

Пример:

<cfset image = ImageReadBase64(form.SigImgData)> 
<cfimage source="#image#" destination="C:\Inetpub\wwwroot\signatures\#fullfilename#.bmp" action="write"> 
+0

ОК. Поэтому, глядя на этот тег на сайте справки Adobe, он дает примеры с заголовками и без них. Есть ли строка примера, которую я предоставил, имеет заголовки, вы знаете? –

+0

Нет заголовков с вашей строкой, но нам все равно – Cedrun

+0

При реализации вашего примера кода я получаю эту ошибку: данные Base64 не соответствуют формату. Данные должны быть в формате, понятном тегам в формате HTML: «data: image/jpg; base64, [base64 data]» –

 Смежные вопросы

  • Нет связанных вопросов^_^