
以下の処理を行っています。
1.クライアント(Flex/ActionScript)でビットマップ画像をバイト配列化して、Base64エンコードして、文字列生成
2.1で生成した文字列をサーバーに送付
3.サーバー(Tomcat/Java)側で文字列取得
4.文字列をBase64デコードしてバイト配列化
5.バイト配列をファイルに書き込む(保存)
保存した画像が正しく表示されない(PNGファイルとしては認識されている)ので、色々と調べたところ、以下の事象が発生しています。
(事象1)Apache CommonsのBase64デコーダーを使ってバイト配列化するとサイズが減る
例えば、クライアント側のバイト配列が 162104 の時、159768 に減ります。
(事象2)Sun.miscのBase64デコーダーを使ってバイト配列化するとサイズは同じだが微妙に内容が異なる)
例えば、不規則なのですが、だいたい10バイトに1ビットくらいの相違があります。以下は相違例です。
Client ⇒ Server
==============
7E→7F
F9→FD
E7→F7
9F→DF
BF→FF
E5→F5
==============
※添付ファイルにバイナリエディタで比較した画面を添付しました。
どこを調べたら良いでしょうか?
また提示が不足している情報があればご指摘ください。
[環境]
OS:WindowXP SP3、Eclipse、jdk1.6.0_24、Flash10.1
クライアント側:Flex SDK3.5 / PNGEncoderでバイト配列生成 / Base64EncoderでBase64文字列化(改行付与フラグはTrue/Falseとも試すも結果同じ)
サーバー側:Tomcat 1.6、Struts、Java

No.1ベストアンサー
- 回答日時:
> 1.クライアント(Flex/ActionScript)でビットマップ画像をバイト配列化して、Base64エンコードして、文字列生成
何かスタンドアローンのツールを使って、この文字列からをデコードしたら、元のファイルになりますか?
> 3.サーバー(Tomcat/Java)側で文字列取得
サーバーで受信した文字列は、クライアントから送信された文字列と等しいですか?
文字コードが違っていて化けたりしませんか?
> 4.文字列をBase64デコードしてバイト配列化
1で生成した文字列を、通信を介在しないで、直接CommonsのBase64クラスでデコードしたら、
元のファイルに復元されますか?
> 5.バイト配列をファイルに書き込む(保存)
バイナリで保存してますか?文字列として保存してしまって、文字コードの影響を受けていませんか?
satomi3951さま、ご回答をありがとうございます。
おかげさまで解決しました。
それぞれ確認してみたところ、、、
> 3.サーバー(Tomcat/Java)側で文字列取得
の部分でクライアントからサーバーに送られた文字列が違っていました。(具体的には"+"が空白に変わっていた)
長さしかチェックしてませんでした・・・。
空白を+に戻してみたところ、期待する結果を得られました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- JavaScript clear機能を失わずにファイルアップロード機能を作成したい 3 2023/06/10 16:12
- Excel(エクセル) 配列操作について 5 2023/04/18 07:27
- C言語・C++・C# 至急お願いします。C言語で.imgのファイルを読み込んで1バイトづつ出力するプログラムを作りたいので 3 2023/01/16 22:49
- Excel(エクセル) Excelにて、フォルダ内のTextファイルをマクロで統合すると文字化けしてしまう時の解消コード 4 2023/01/01 07:32
- Visual Basic(VBA) Vbaで数式をポーランド記法に変換するコードを作って実行しようとするとフリーズします。 1 2022/05/24 17:53
- Excel(エクセル) 名前と日付が一致する箇所にフラグを立てる関数が知りたいです 4 2022/08/11 02:24
- Java Java 南京錠 2 2023/02/04 11:46
- Visual Basic(VBA) 以下のVBAで該当文字列の前後に付与したい。 例 前に付与 abc ユーザーID 12345 後に付 3 2022/04/19 21:50
- C言語・C++・C# C#テキストボックスの文字を配列にいれてその後表示する 4 2022/07/17 04:47
- SQL Server [SQLServer] テーブル名からカラム名を取得する 1 2022/08/23 21:20
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
javaでのプログラム(配列)につ...
-
Javaで文字と数字が混ざったも...
-
配列の中に複数存在する数がい...
-
IF関数でEmpty値を設定する方法。
-
乱数とは・・・?
-
ダブルクォーテーションのrepla...
-
フォームのピクチャーボックス...
-
メインが含まれていません
-
C言語 重複しない4ケタの乱数...
-
JSPやサーブレットでSystem.out...
-
どうしてもプログラムが動いて...
-
指定した座標の色を得るためには
-
プログラミングの問題です。大...
-
Graphics gra = this.getGraphi...
-
テキストボックスに入力された...
-
コントロールが配列かどうかを...
-
直し方について教えて頂きたい...
-
あるディレクトリにある複数の...
-
コンパイルができません…
-
javaの数字当てゲーム
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Javaで文字と数字が混ざったも...
-
フローチャート
-
この警告はどうすれば?
-
[Ljava.lang.Stringってなんですか
-
配列で、値の入っている要素数...
-
C#で動的配列Listの中身をListB...
-
配列の中に複数存在する数がい...
-
セッションを使ったint型の値の...
-
【C#】ハッシュテーブル(連想...
-
javaについて
-
javaでの文字列からの数字抽出
-
配列について
-
javaで大容量テキストファイル...
-
配列数を超えてアクセスしたと...
-
【Ajax通信&Java】配列の受け取...
-
『args[]』とは?
-
ArrayListからBean配列に値をセ...
-
C言語でunsigned char配列を連...
-
strutsで2次元配列をやりとりす...
-
javamailで複数人にメールを送...
おすすめ情報