0

我已经搜索了很多关于如何将图像从 windowsphonen 8 应用程序上传到我的 php 页面(文件服务器)的不同教程 - 对我没有任何作用,所以我问你。

这是我将 Stream 转换为 Base64 的代码

    string PhotoStreamToBase64(Stream PhotoStream)
    {
        MemoryStream memoryStream = new MemoryStream();
        PhotoStream.CopyTo(memoryStream);
        byte[] result = memoryStream.ToArray();

        string base64img = System.Convert.ToBase64String(result);
        StringBuilder sb = new StringBuilder();

        for (int i = 0; i < base64img.Length; i += 32766)
        {
            sb.Append(Uri.EscapeDataString(base64img.Substring(i, Math.Min(32766, base64img.Length - i))));
        }

        return sb.ToString();
    }

我使用 photoChooserTask 捕获图像(这工作正常,但我没有获得可用于其他方法的流)

    private void photoChooserTask_Completed(object sender, PhotoResult e)
    {
        if (e.TaskResult == TaskResult.OK)
        {
            MessageBox.Show(e.ChosenPhoto.Length.ToString());

            //Code to display the photo on the page in an image control named myImage.
            System.Windows.Media.Imaging.BitmapImage bmp = new System.Windows.Media.Imaging.BitmapImage();
            bmp.SetSource(e.ChosenPhoto);
            MyImage.Source = bmp;
        }
    }

要上传图片,我试过这个:

    public void UploadImageAsync(Stream PhotoStream)
    {
        try
        {
            WebClient w = new WebClient();
            w.Headers["Content-type"] = "application/x-www-form-urlencoded";

            string data = "id=1" +
                    "&_fake_status=200" +
                    "&type=base64" +
                    "&image=" + PhotoStreamToBase64(PhotoStream);

            w.UploadStringAsync(new Uri("http://myurl.de/php/app/changeimg.php", UriKind.Absolute), "POST", data);

        }
        catch (Exception ex)
        {
        }
    }

最后一部分是我的php文件

    function base64_to_image( $imageData, $outputfile ) {
    $ifp = fopen( $outputfile, "wb" );
    fwrite( $ifp, base64_decode( $imageData ) );
    fclose( $ifp );
    return( $outputfile );
    }       

    if (isset($_POST['image'])) {
    base64_to_jpeg($_POST['image'], "test".$_GET['id'].".jpg");
$file = 'people.txt';

     $person = "Win";

    file_put_contents($file, $person, FILE_APPEND | LOCK_EX);
     }
    else
{
    die("no image data found");
$file = 'people.txt';

     $person = "Fail";

    file_put_contents($file, $person, FILE_APPEND | LOCK_EX);
}

我从不同的来源获得了所有这些代码片段,并且不知何故认为这是我能找到的最好的“想法”。有人可能有我的问题的示例代码吗?我对 Windowsphone 开发人员真的很陌生,我需要一些认真的帮助来解决这个问题。

4

1 回答 1

1

首先,不要使用 WebClient 类,使用HttpClient及其方法PostAsync然后它完全依赖于你的 Web API 实现

于 2013-11-01T11:14:34.073 回答