将Windows Phone 7应用程序中的图像文件上载到PHP

我正在尝试从图片库(在WP7上)上传图片并将其保存在服务器上的文件夹中。

在服务器上,我使用PHP来使用POST方法接收文件。 PHP代码是:

 

我已经尝试了一些方法,但它们似乎都失败了。 我已经使用Client.UploadFile方法在Windows窗体应用程序中完成了这项工作,但它似乎无法在Windows Phone应用程序上使用。

我认为httpwebrequest可以提供帮助,对吗?

到目前为止,这是我的C#代码:

 public partial class SamplePage : PhoneApplicationPage { public SamplePage() { InitializeComponent(); } PhotoChooserTask selectphoto = null; private void SampleBtn_Click(object sender, RoutedEventArgs e) { selectphoto = new PhotoChooserTask(); selectphoto.Completed += new EventHandler(selectphoto_Completed); selectphoto.Show(); } void selectphoto_Completed(object sender, PhotoResult e) { if (e.TaskResult == TaskResult.OK) { BinaryReader reader = new BinaryReader(e.ChosenPhoto); image1.Source = new BitmapImage(new Uri(e.OriginalFileName)); txtBX.Text = e.OriginalFileName; } } } 

我在某处读到了图像需要转换为字符串,我不确定。 但是,请帮助我。

非常感谢提前。

我会将图像转换为base64(请参阅System.Convert),然后通过POST传输:

  HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://mydomain.cc/saveimage.php"); request.Method = "POST"; request.ContentType = "application/x-www-form-urlencoded"; string postData = String.Format("image={0}", myBase64EncodedImage); // 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(); } } }, null); }, null); } 

saveimage.php应如下所示:

  

注意:我还没有测试过代码。 可能存在拼写错误或其他错误。 这只是为了说明如何使用POST传输图像。

编辑为评论的代表:我没有编码到base64的代码,但这里是如何在C#中解码base64编码的图像:

 byte[] image = Convert.FromBase64String(str);