私のアプリケーションはクリップボードから画像を取得し、サーバーに保存します。画像の取得は、java および javascript を介して行われます。私のaspxコードビハインドはこのデータ(base64)を受け取り、ファイルに書き込みます。ここに私のコードがあります
byte[] buffer = new byte[Request.InputStream.Length];
int offset = 0;
int cnt = 0;
while ((cnt = Request.InputStream.Read(buffer, offset, 10)) > 0)
{
offset += cnt;
}
fileName = DateTime.Now.ToString("yyyyMMddHHmmssffff") + ".png";
string base64 = System.Text.Encoding.UTF8.GetString(buffer);
byte[] bytes = Convert.FromBase64String(base64);
System.IO.FileStream stream = new FileStream(@"D:\www\images\" + fileName, FileMode.CreateNew);
System.IO.BinaryWriter writer =new BinaryWriter(stream);
writer.Write(bytes, 0, bytes.Length);
writer.Close();
私の問題は base64 です。この文字列を utf8 エンコードとして取得します。これは画像を改ざんしているようで、開いたり表示したりできません。
[編集]データを作成するJavaコードは次のとおりです
StringBuffer sb = new StringBuffer();
ByteArrayOutputStream stream = new ByteArrayOutputStream();
sb.append("data:image/").append("png").append(";base64,").append(Base64.encode(stream.toByteArray()));
だから私はこのような文字列を取得します data:image/png;base64,iVBORw0KGgoA.. そして ajax を使用して、この文字列を aspx ページに投稿します