PhotoChooserTask で選択した画像を php サーバーにアップロードし、サーバーにファイルを書き込もうとしました。エンコードに UTF8 を使用しましたが、サーバーでは、元の画像のサイズに関係なく、1 キロバイトのファイルしか取得できません。それをbase64stringにエンコードし、サーバーでデコードしました。今、サイズが 4/3*imagesize (デコードなし) のファイルを取得しましたが、デコード後は画像を取得できません (ファイルサイズは元のファイルサイズと同じです)。私は多くの方法で(画像を読むために)試しましたが、これを解決できませんでした.何が問題なのですか?または、他の方法を提案できますか?
クライアントのコード:
PhotoChooserTask selectphoto = new PhotoChooserTask();
selectphoto.Completed += new EventHandler<PhotoResult>(photoChooserTask_Completed);
selectphoto.Show();
void photoChooserTask_Completed(object sender, PhotoResult e)
{
if (e.TaskResult == TaskResult.OK)
{
System.Windows.Media.Imaging.BitmapImage bmp = new System.Windows.Media.Imaging.BitmapImage();
bmp.SetSource(e.ChosenPhoto);
byte[] data = null;
using (MemoryStream stream = new MemoryStream())
{
WriteableBitmap wBitmap = new WriteableBitmap(bmp);
wBitmap.SaveJpeg(stream, wBitmap.PixelWidth, wBitmap.PixelHeight, 0, 100);
stream.Seek(0, SeekOrigin.Begin);
data = stream.GetBuffer();
}
string utfData = System.Text.Encoding.UTF8.GetString(data, 0, data.Length);
HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://192.168.1.49/xampp/imageserver.php");
request.Method = "POST";
request.ContentType = "application/x-www-form-urlencoded";
postData = String.Format("image={0}", utfData);
// Getting the request stream.
request.BeginGetRequestStream
(result =>
{
// Sending the request.
using (var requestStream = request.EndGetRequestStream(result))
{
using (StreamWriter writer = new StreamWriter(requestStream))
{
writer.Write(postData);
writer.Flush();
}
}
// Getting the response.
request.BeginGetResponse(responseResult =>
{
var webResponse = request.EndGetResponse(responseResult);
using (var responseStream = webResponse.GetResponseStream())
{
using (var streamReader = new StreamReader(responseStream))
{
string srresult = streamReader.ReadToEnd();
System.Diagnostics.Debug.WriteLine("sssssrreeeeeessssulllltttttt========="+srresult);
}
}
}, null);
}, null);
}
サーバー内:
<?php
if (isset($_POST['image'])) {
$ifp = fopen( "withoutdecode.txt", "wb" );
fwrite( $ifp, (($_POST['image'])) );
fclose( $ifp );
$ifp2 = fopen( "theImage.png", "wb" );
fwrite( $ifp2, utf8_decode(($_POST['image'])) );
fclose( $ifp2 );
}
else
{
die("no image data found");
echo "fail";
}
?>