2

数時間前、ファイル API によって作成された DataUrl をフォーム属性を介して渡し、coldfusion に画像ファイルをサーバーに書き込むことで、html5 ファイル API と coldfusion の間で簡単に通信できることがわかりました。

これはうまくいきました。

ただし、現在、これらの base64 文字列のデコードを拒否しています。他のデコーダーで base64 文字列をテストしたところ、画像が正しく表示されます。私はコードに何も変更していません。ここで何が起こっているのか誰か教えてください..?

<cfimage source="#attributes.image#" action="write" destination="../images/new_image.png" isBase64="yes" overwrite="true">

edit 20/12: 今日、職場でコンピューターの電源を入れると、再び機能し始めました。昨日何が起こったのか、まだはっきりとはわかりません。Coldfusion が返したエラーは、「ファイルは base64 でエンコードされているようには見えません」でした。私が cfimage タグに渡した base64-string には、あなたが説明したのと同じようにヘッダーが含まれていました。

4

1 に答える 1

3

タグをそのまま保存するだけの場合は、タグをスキップして<cfimage>タグを使用できます。大量のオーバーヘッドが追加され、画像を保存する前に変更する予定がある場合にのみ役立ちます。<cffile><cfimage>

例えば。

<cffile action="write" file="C:\temp\test-image.jpg" output="#binaryDecode(base64data)#" addnewline="no">

または試してみてください...

<cfset myImage = imageReadBase64(base64data)>
<cfimage action="write" source="#myImage#" destination="C:\temp\test-image.jpg">

base64 文字列にヘッダーがありますか?

例えば。"data:image/jpg;base64,..."文字列の先頭に?

メモリから、imageReadBase64() は、ヘッダーの有無にかかわらず base64 文字列をサポートします。

http://www.cfquickdocs.com/cf9/#BinaryDecode

http://www.cfquickdocs.com/cf9/#ImageReadBase64

于 2011-12-20T01:15:38.257 に答える