この投稿の最終編集者は 2014-06-19 19:17:39 に diply によって行われました この関数はデコード後に文字列を返すことがわかりました。
現時点でのプリエンコーディングは、画像ファイルから読み取られたバイナリ ファイル ストリームです。この関数を使用してデコードして変数に割り当てる場合、デフォルトでは文字列変数になるはずです。文字列変数にバイナリ ファイル ストリームを格納できますか?そうでない場合、正しくデコードするにはどうすればよいでしょうか?
もう 1 つの質問は、デコード後、このバイナリ ストリームを mysql の longblob フィールドに保存したいのですが、どの文字をエスケープする必要があるでしょうか。 PHPにはこの脱出を一度に実現する特別な関数があるのでしょうか?
使用したエンコードとデコード方法を追加します。
エンコード部分 (VC 側)
char buffer[102400]; //BUF_SIZE大小自己定义<br />DWORD length;<br /><br />//照片图片<br />FILE * pFile = fopen("photo.bmp", "rb");<br />int img = fread(buffer, sizeof(char), 102400, pFile);//将文件二进制流读入到buffer中<br />fclose(pFile);<br /><br />CryptBinaryToString((const BYTE *)buffer,img,CRYPT_STRING_BASE64,NULL,&length);//获取存放编码后字串所需长度<br />ImgString = new TCHAR[length];//ImgString是要发送给PHP的字串,根据上面获取的长度,初始化该字串<br />length--;//减去最后字串结束符的位置<br />CryptBinaryToString((const BYTE *)buffer,img,CRYPT_STRING_BASE64,ImgString,&length);//向ImgString里面存放buffer的base64编码
デコードしてデータベース部分に書き込みます ( PHP Mysql)
$face = addslashes(base64_decode(trim($_REQUEST['face'],"'")));<br />$query = "update index_base set face=$face where id=$bid";<br />$result = mysql_query($query);
-----解決策---------インターネット上で Base64 でエンコードされた C ソース コードを探してみてください。たくさんあります。また、エンコードとデコードが正しいかどうかを確認するために使用できるオンライン コーディング Web ページが多数あります: http://www1.tc711.com/tool/BASE64.htm
------解決策---- ---------------- は必要な長さの 1 エンドビットに対応する必要があります
64 文字ごとに 1 つの改行?復帰と改行でしょうか?
これは通常の伝送フォーマット (RFC 2045) であり、目的は伝送中の欠落コードを迅速に修正することです
デコード中に削除するだけです
-----解決策--- --- ---------------はURLデコードによりスペースになります
$face = str_replace(' ', ' ', $_REQUEST[' face']) ;
元に戻すだけです
$img = Base64_decode($face);
画像データを復元します