我已经搜索了很多关于如何将图像从 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 开发人员真的很陌生,我需要一些认真的帮助来解决这个问题。