POST multipart/form-data avec Objective-C
Donc ce code HTML soumet les données dans le format correct pour moi.
<form action="https://www.example.com/register.php" method="post" enctype="multipart/form-data">
Name: <input type="text" name="userName"><BR />
Email: <input type="text" name="userEmail"><BR />
Password: <input type="text" name="userPassword"><BR />
Avatar: <input type="file" name="avatar"><BR />
<input type="submit">
</form>
J'ai regardé dans un bon nombre d'articles sur la façon de faire un multipart/form-data POST sur iOS, mais pas vraiment expliquer ce qu'il faut faire si il y avait des paramètres normaux ainsi que l'upload de fichier.
Pourriez-vous s'il vous plaît aidez moi avec le code de POSTER ce en Obj-C?
Merci!
Vous devez vous connecter pour publier un commentaire.
Le processus est comme suit:
Créer le dictionnaire avec le
userName
,userEmail
, etuserPassword
paramètres.Déterminer le chemin d'accès de l'image:
Créer la demande:
C'est la méthode utilisée ci-dessus pour construire le corps de la demande:
Ci-dessus utilise l'utilitaire suivant les méthodes:
Puis soumettre la demande. Il y a beaucoup, beaucoup d'options ici.
Par exemple, si vous utilisez
NSURLSession
, vous pouvez créerNSURLSessionUploadTask
:Ou vous pouvez créer un
NSURLSessionDataTask
:Ci-dessus suppose que le serveur est de simplement retourner le texte de la réponse. C'est mieux si le serveur a renvoyé JSON, dans ce cas, vous pourriez utiliser une
NSJSONSerialization
plutôt queNSString
méthodeinitWithData
.De même, je suis en utilisant l'achèvement de bloquer le transfert de
NSURLSession
ci-dessus, mais n'hésitez pas à utiliser le plus riche en fonction de délégué de transferts, trop. Mais qui semble au-delà de la portée de cette question, donc je vais laisser ça pour vous.Mais j'espère que cela illustre bien l'idée.
Je manquerais à mon devoir si je n'ai pas de point que, beaucoup plus facile que le ci-dessus, vous pouvez utiliser AFNetworking, répéter les étapes 1 et 2 ci-dessus, mais alors il suffit d'appeler:
NSString *boundary = [NSString stringWithFormat:@"Boundary-%@", [[NSUUID UUID] UUIDString]];
fieldName
est quelque domaine que ce soit le nom de votre serveur de code est à la recherche d'lors de l'identification des téléchargements. Par exemple, si votre serveur de code a été écrit en PHP, c'est tout champ nom du serveur de code d'usages en son$_FILES
références. Dans l'exemple inclus dans la question d'origine, ce nom de champ a étéavatar
.NSJSONSerialization
. Si vous utilisez l'aide de AFNetworking, vous pouvez utiliser la valeur par défautAFJSONRequestSerializer
au lieu de remplacer l'requestSerializer
avecAFHTTPRequestSerializer
. Le seul truc, c'est que le code du serveur doit changer de parser JSON demande. Mais si vous recherchez pour cela (par exemple, "PHP, JSON demande"), vous devriez trouver beaucoup de références.UIImage
dans un JSON demande. Mais ce que vous peut faire est de prendre queUIImage
, obtenir leNSData
pour ça (que ce soit par, idéalement, en remontant à l'origine de l'actif ou, si vous ne pouvez pas, en utilisant quelque chose commeUIImagePNGRepresentation
), puis utiliser l'encodage base64 pour convertir une chaîne de caractères. Ensuite, vous pouvez alors comprendre que base64 chaîne dans votre dictionnaire que vous envoyez via JSON. Et puis, votre serveur peut décodage base64 dans votre code serveur. Si vous recherchez "base 64 image json" ou quelque chose comme ça, vous aurez probablement beaucoup de références.appendPartWithFileURL
méthode ne retourne pas deBOOL
valeur, mais il le fait. Veuillez vous référer à le courant AFNetworking de documentation si vous avez n'importe quelle question.Could Not Convert To PDF
. Quand j'ai changé deNSData *data = [NSData dataWithContentsOfFile:path];
àUIImage *testImage = [UIImage imageNamed:@"test-image"]; NSData *data = UIImagePNGRepresentation(testImage);
j'ai été en mesure de télécharger l'image correctement. Merci!Publier plusieurs images à l'aide de plusieurs parties ou de données de formulaire avec Objective-C
Essayer de l'utiliser pour de la vidéo et de données d'image avec différents types mime.
J'ai du mal avec ça pendant un moment, si vous êtes à la recherche pour le téléchargement d'images ou d'autres types de fichiers, vous pouvez effectuer les opérations suivantes à l'aide de
AFNetworking 3.0
Et voici comment mon AttachmentsModel ressemble:
Essayez ceci:
Swift 5
où
NetworkRequest
- protocole simple qui incapsulate demande d'infoNetworkEndPoint
- point de terminaison de la ValeurLimite Sting
NetworkRequestType
:NetworkMimeType
NSMutableURLRequest
, mais plutôt d'utiliserURLRequest
directement. De même, on ne devrait pas utiliserNSMutableData
soit, mais plutôt d'utiliserData
. Si vous allez écrire Swift, puis d'écrire Swift et de ne pas utiliser cesNS
classes.