4

私は、画像をbase64文字列でエンコードし、phpスクリプトに渡して、この文字列をblob(テキストも試しました)ファイルに保存することで、画像をmysqlデータベースに保存しようとしています。何が起こるかというと、文字列はそのままphpスクリプトに送信されますが、データベースに保存されると、まったく異なる文字列として保存されます。

これが私がそれをする方法です:

    Bitmap image = BitmapFactory.decodeFile("/sdcard/photo2.jpg");

    ByteArrayOutputStream stream = new ByteArrayOutputStream();
    image.compress(Bitmap.CompressFormat.PNG, 100, stream);

    byte[] byteImage = stream.toByteArray();

    String s = Base64.encodeToString(byteImage, Base64.NO_WRAP | Base64.URL_SAFE);

次に、文字列's'がphpスクリプトに渡され(正しくチェックしたとおり)、スクリプトがデータベースに挿入します。

このリンクhttp://diffchecker.com/kKD4w16Cには、元のエンコードされた文字列(画面の左側)とデータベースに保存されている文字列(画面の右側)が含まれています。

なぜこれが起こっているのか、そしてそれを防ぐ方法はありますか?

前もって感謝します。

4

1 に答える 1

2

気づいていませんか、弦の約 20% をカットしただけです。DB フィールドに制限があるようです。のようなもので、長さの文字列varchar(255)を保存しようとします。1500

http://tinyurl.com/c2e7hru - こちらをご覧ください。DBフィールド値の末尾をコピーして、「元の」値で見つけます。

また、エンコードを確認してください。

于 2012-11-20T15:14:41.500 に答える