Carica il file immagine in Windows Phone 7 Applicazione a PHP

Sto cercando di caricare un’immagine dalla Libreria immagini (su WP7) e salvarla in una cartella sul server.

Sul server, sto usando PHP per ricevere il file usando il metodo POST. Il codice PHP è:

 

Ho già provato alcuni approcci, ma sembrano tutti fallire. Ho già svolto questo lavoro in un’applicazione Windows Form utilizzando il metodo Client.UploadFile ma sembra che non possa essere utilizzato su un’applicazione Windows Phone.

Penso che httpwebrequest possa aiutare, giusto?

Questo è il mio codice C # finora:

 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; } } } 

L’ho letto da qualche parte che l’immagine deve essere convertita in una stringa di byte, non lo so per certo. Ma, per favore aiutami.

Grazie mille in anticipo.

Vorrei convertire l’immagine in base64 (vedi System.Convert) quindi trasferire tramite 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 dovrebbe assomigliare a questo:

  

Nota: non ho testato il codice. Potrebbero esserci errori di battitura o altri errori. È solo per illustrare come trasferire un’immagine usando il POST.

Modifica come repy al tuo commento: non ho il codice per codificare in base64 a portata di mano, ma qui è come decodificare un’immagine codificata Base64 in C #:

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