Maison >développement back-end >tutoriel php >Comment télécharger des fichiers sur un serveur à l'aide de HTTP POST Multipart/Form-Data sous Windows Phone 8 et Windows 8 ?

Comment télécharger des fichiers sur un serveur à l'aide de HTTP POST Multipart/Form-Data sous Windows Phone 8 et Windows 8 ?

Linda Hamilton
Linda Hamiltonoriginal
2024-12-08 11:51:12705parcourir

How to Upload Files to a Server Using HTTP POST Multipart/Form-Data in Windows Phone 8 and Windows 8?

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

  • Assurez-vous que votre service Web est correctement configuré pour gérer les données multipart/form demandes.
  • Testez minutieusement votre implémentation pour vous assurer que les données sont téléchargées avec succès et sans perte ni corruption de données.

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn