Télécharger un fichier sur un serveur avec HTTP POST Multipart/Form-Data dans Windows Phone et Windows 8
Le téléchargement de fichiers sur un serveur Web est un tâche courante dans le développement mobile. Dans ce guide, nous explorerons comment y parvenir avec HTTP POST multipart/form-data en utilisant à la fois Windows Phone 8 et Windows 8 à l'aide d'API natives.
Implémentation de Windows Phone 8
Vous avez tenté de télécharger un fichier sur votre service Web PHP en utilisant HTTP POST avec multipart/form-data, mais vous avez rencontré des problèmes. Votre code ne transmet pas le paramètre "userid" comme prévu. Pour résoudre ce problème, modifiez votre code pour inclure le paramètre "userid" dans les données du formulaire.
Voici un exemple de la façon de procéder :
private void GetRequestStreamCallback(IAsyncResult asynchronousResult, byte[] postData) { HttpWebRequest request = (HttpWebRequest)asynchronousResult.AsyncState; Stream postStream = request.EndGetRequestStream(asynchronousResult); string boundary = "---------------------------" + DateTime.Now.Ticks.ToString("x"); byte[] boundary_bytes = Encoding.ASCII.GetBytes("\r\n--" + boundary + "\r\n"); // Write the "userid" parameter postStream.Write(boundary_bytes, 0, boundary_bytes.Length); byte[] userid_bytes = Encoding.ASCII.GetBytes("Content-Disposition: form-data; name=\"userid\"\r\n\r\n" + "SOME_ID" + "\r\n"); postStream.Write(userid_bytes, 0, userid_bytes.Length); // Write the file data postStream.Write(boundary_bytes, 0, boundary_bytes.Length); byte[] file_content_disposition_bytes = Encoding.ASCII.GetBytes("Content-Disposition: form-data; name=\"file\"; filename=\"database.sqlite\"\r\nContent-Type: application/octet-stream\r\n\r\n"); postStream.Write(file_content_disposition_bytes, 0, file_content_disposition_bytes.Length); postStream.Write(postData, 0, postData.Length); // Write the ending boundary postStream.Write(boundary_bytes, 0, boundary_bytes.Length); byte[] end_boundary = Encoding.ASCII.GetBytes("\r\n--" + boundary + "--\r\n"); postStream.Write(end_boundary, 0, end_boundary.Length); postStream.Close(); var asyncResult = request.BeginGetResponse(new AsyncCallback(GetResponseCallback), request); }
Dans ce code, le "userid " Le paramètre est transmis avec les données du fichier. Assurez-vous que votre service Web PHP attend les paramètres dans ce format.
Implémentation de Windows 8
Pour Windows 8, vous avez tenté d'utiliser HttpClient et MultipartFormDataContent pour télécharger le fichier. , mais cela a également échoué. Le problème peut résider dans le type de contenu incorrect pour les données du fichier. Modifiez votre code pour spécifier le type de contenu correct :
form.Add(new ByteArrayContent(file_bytes, 0, file_bytes.Length), "file", "hello1.jpg", "application/octet-stream");
Ce code définit correctement le type de contenu sur "application/octet-stream" pour les données du fichier.
Remarques supplémentaires
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!