Téléchargement d'un fichier sur un serveur à l'aide de HTTP POST Multipart/Form-Data dans Windows Phone 8
Vous essayez de télécharger une base de données SQLite à un service Web PHP via une requête HTTP POST avec le type MIME multipart/form-data et une chaîne de données supplémentaire "userid=SOME_ID". Cependant, votre code actuel ne fonctionne pas comme prévu.
Le type MIME "multipart/form-data" permet la transmission de données de formulaire ainsi que de données binaires complexes telles que des fichiers. Il est largement utilisé pour le téléchargement de fichiers dans les applications Web.
Pour surmonter les difficultés rencontrées dans le code de votre Windows Phone 8, pensez à utiliser les fonctions intégrées suivantes :
Voici une version améliorée version de votre code :
async void MainPage_Loaded(object sender, RoutedEventArgs e) { var file = await Windows.ApplicationModel.Package.Current.InstalledLocation.GetFileAsync(DBNAME); byte[] fileBytes = null; using (var stream = await file.OpenReadAsync()) { fileBytes = new byte[stream.Size]; using (var reader = new DataReader(stream)) { await reader.LoadAsync((uint)stream.Size); reader.ReadBytes(fileBytes); } } HttpPost(fileBytes); } private async void HttpPost(byte[] fileBytes) { HttpWebRequest httpWebRequest = (HttpWebRequest)WebRequest.Create("http://www.myserver.com/upload.php"); httpWebRequest.ContentType = "multipart/form-data"; httpWebRequest.Method = "POST"; using (var formBody = new HttpFormBody()) { formBody.AddString("userid", HttpUtility.UrlEncode("SOME_ID")); httpWebRequest.AddString(formBody.CreateFormField()); } using (var dataStream = await httpWebRequest.GetRequestStreamAsync()) { dataStream.Write(fileBytes, 0, fileBytes.Length); dataStream.Close(); } var asyncResult = httpWebRequest.BeginGetResponse(new AsyncCallback(GetResponseCallback), httpWebRequest); }
Cette modification ajoute la chaîne "userid" au corps de la requête à l'aide de la méthode HttpRequest.AddString(). Cela garantit également que les octets du fichier sont ajoutés à la fin du corps de la requête. En utilisant ces fonctions, vous pouvez transmettre efficacement à la fois le fichier et les données de chaîne supplémentaires dans la requête HTTP POST, satisfaisant ainsi les exigences multipart/form-data.
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!