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

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

Linda Hamilton
Linda Hamiltonoriginal
2024-12-30 15:25:14718parcourir

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

Télécharger des fichiers sur un serveur avec HTTP POST Multipart/Form-Data

Le téléchargement de fichiers sur un serveur est une tâche courante lors du développement d'applications Web. HTTP POST multipart/form-data est un type MIME utilisé pour transmettre des fichiers avec d'autres données de formulaire. Cet article fournira un guide complet sur le téléchargement de fichiers à l'aide de HTTP POST multipart/form-data dans Windows Phone 8 et Windows 8, abordant le problème courant du code qui ne télécharge pas le fichier ou ne fournit pas d'erreurs.

Windows Phone 8 Implémentation

Le premier bloc de code de la question tente de télécharger une base de données SQLite à l'aide de HTTP POST multipart/form-data dans Windows Phone 8. Cependant, le code fourni rencontre un problème où le Le tableau fileBytes est vide. Cela peut être dû au fait que la méthode correcte pour lire le fichier à partir de InsulatedStorageFile n'est pas utilisée.

Pour résoudre ce problème, envisagez d'utiliser le code suivant pour lire le fichier :

var file = await ApplicationData.Current.LocalFolder.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);
    }
}

Un autre problème est transmettre des données supplémentaires, telles que "userid=SOME_ID", avec le fichier. Dans le code fourni, il n'existe aucun mécanisme pour transmettre ces données. Pour inclure des données supplémentaires, l'objet HttpWebRequest peut être utilisé comme suit :

NameValueCollection postData = new NameValueCollection();
postData.Add("userid", "SOME_ID");
byte[] postDataBytes = Encoding.UTF8.GetBytes(postData.ToString());
postStream.Write(postDataBytes, 0, postDataBytes.Length);

Implémentation de Windows 8

Le deuxième bloc de code de la question utilise une API plus récente, HttpClient, pour télécharger des fichiers. Toutefois, le code suppose qu'un objet MultipartFormDataContent est utilisé pour encapsuler à la fois le fichier et les données supplémentaires. Cette hypothèse est incorrecte, car HttpClient prend en charge l'envoi direct de requêtes multipart/form-data, éliminant ainsi le besoin d'un objet MultipartFormDataContent intermédiaire.

Le code suivant montre comment télécharger un fichier à l'aide de HttpClient dans Windows 8 :

HttpClient httpClient = new HttpClient();
ByteArrayContent fileContent = new ByteArrayContent(fileBytes);
fileContent.Headers.ContentType = new MediaTypeHeaderValue("application/octet-stream");
MultipartFormDataContent multiPartContent = new MultipartFormDataContent();
multiPartContent.Add(fileContent, "file", "file.ext");
HttpResponseMessage response = await httpClient.PostAsync("http://www.myserver.com/upload.php", multiPartContent);

Dans cet exemple, l'objet fileContent est créé et les octets du fichier lui sont attribués. Le MediaTypeHeaderValue est utilisé pour spécifier le type de contenu du fichier. Le fichier est ajouté à l'objet MultipartFormDataContent avec le nom et l'extension du fichier. La réponse du serveur est accessible en vérifiant l'objet HttpResponseMessage.

Conclusion

Cet article a exploré le processus de téléchargement de fichiers sur un serveur à l'aide de HTTP POST multipart/form-data dans Windows Phone 8 et Windows 8. En abordant le problème des fileBytes vides et en proposant des implémentations alternatives, ce guide donne aux développeurs les connaissances nécessaires pour gérer efficacement les téléchargements de fichiers dans leur candidatures.

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