Open FlashChart2を使用していくつかのグラフを作成しています。グラフの画像を保存できるようにしたいのですが、OFC2はこれを実現するためのいくつかのメソッドを提供しています。OFC2サイトの例を使用して、生の画像データをページに直接表示しましたが、ほとんどのユーザーが使用しているIE6では機能しません(私は知っています)。
post_image
生の画像データをサーバーに送信するために、OFC2方式を使用するように切り替えました。Perlスクリプトを使用して画像データを受信し、ファイルに保存すると、画像を表示できます。このメソッドの使用に関する不幸な部分post_image
は、画像の保存時にActionScriptがエラーをスローすることです。エラー#2101:URLVariables.decode()に渡される文字列は、名前と値のペアを含むURLエンコードされたクエリ文字列である必要があります。
これは明らかにAdobeのバグです-このページを参照してください。このエラーのため、post_image
メソッドは正常に完了しないため、javascriptコールバックは起動しません。基本的に、画像が正常に保存されたかどうかを確認する方法がありません。
そのため、get_img_binary
OFC2のメソッドを使用して画像のバイナリデータを取得し、jQueryを使用してバイナリデータをPerlスクリプトに投稿すると思いました。
バイナリデータを正しく送信する方法、Perlスクリプトにバイナリデータを正しく受信させる方法、またはその両方がわかりません。
これが私のjQuery関数です:
var chartObj = $("#chart_object").get(0);
$.ajax({
type: "POST",
url: 'download_image.pl',
//contentType: 'application/octet-stream',
contentType: 'image/png',
//processData: false,
//data: { imgData: chartObj.get_img_binary() },
data: chartObj.get_img_binary(),
dataType: "text",
success: function(data) {
console.log( data );
}
});
コメントアウトされた行のいくつかから、Ajax呼び出しのさまざまなcontentTypesやその他の設定を試したことがわかります。
Ajax呼び出しはいくつかのデータを送信していますが、バイナリではないようです。バイナリデータのbase64表現だと思います。
javascriptからサーバーにバイナリデータを送信する方法について誰かが何かアイデアがありますか?
私が持っているPerlスクリプトはpost_image
メソッドに対して正常に機能するので、問題はないと思いますか?
前もって感謝します!