วันจันทร์ที่ 18 สิงหาคม พ.ศ. 2557

How to upload image from windows phone 8 to web server. c# อัพโหลดรูปในวินโดว์โฟนขึ้นเซริฟ์เวอร์

Step การอัพโหลดรูปขึ้น server ใน windows phone for c#
1.)ใช้ชุดคำสั่ง PhotoChooserTask เลือกรูปในเครื่องแล้วเก็บเป็น bitmapImage
หรือใช้ photoCameraCapture ถ้าต้องการให้ถ่ายรูปทันทีแล้วเก็บเป็นภาพแทน

http://www.geekchamp.com/tips/how-to-use-photochoosertask-and-cameracapturetask-in-windows-phone

2.)นำรูป bitmapImage มาเข้ารหัส แปรเป็น byte[]
public static byte[] ImageToBytes(BitmapImage img)
        {
            using (MemoryStream ms = new MemoryStream())
            {
                WriteableBitmap btmMap = new WriteableBitmap(img);
                System.Windows.Media.Imaging.Extensions.SaveJpeg(btmMap, ms, img.PixelWidth, img.PixelHeight, 0, 100);
                img = null;
                return ms.ToArray();
            }
        }

เรียกใช้เช่น byte[] bit = ImageToBytes(img);

http://stackoverflow.com/questions/22241480/convert-bitmap-image-to-byte-array-windows-phone-8

 
3.)นำ byte[] มาเข้ารหัส base64 แปลเป็น String ความยาวมหาศาล

string strImg = Convert.ToBase64String(bit);

4.)ส่ง String ไปสู่ server เข้าไปที่ไฟล์ upload.php
ดูวิธีได้ที่ www.thaicreate.com/mobile/windows-phone-add-insert-data-into-web-server.html

5.)ที่ไฟล์ upload.php รับและแปล String กลับเป็น image ด้วย base64.decode

 แล้วเซฟภาพเข้าสู่ไดเรกทอรี่ของเว็บไซด์ ในที่นี้ save ลงใน webURL/image

php code

define('UPLOAD_DIR', 'image/');
    $img = $_POST['sIMG'];
    $img = str_replace('data:image/jpeg;base64,', '', $img);
    $img = str_replace(' ', '+', $img);
    $data = base64_decode($img);
    $file = UPLOAD_DIR . uniqid() . '.jpeg';
    $success = file_put_contents($file, $data);