我这里用AFNetworking上传图片
报The data couldn’t be read because it isn’t in the correct format.有人帮忙看看是哪里出问题了么?下面是我写的代码。
AFHTTPRequestOperationManager *m = [AFHTTPRequestOperationManager manager];
m.responseSerializer.acceptableContentTypes = [NSSet setWithObjects:@"text/html", @"application/json", nil];
m.requestSerializer = [AFHTTPRequestSerializer serializer];
[m.requestSerializer setValue:@"multipart/form-data" forHTTPHeaderField:@"Content-Type"];
NS_APPDebugLog(@"请求链接:%@/%@", urlString, parametersDic);
[m POST:@"http://59.48.96.118:7001/portal/SI_USR00025/upload.do" parameters:nil
constructingBodyWithBlock:^(id<AFMultipartFormData> _Nonnull formData) {
for (int i = 0; i < imagePickerArray.count; i++)
{
UIImage *portraitImg = imagePickerArray[i];
portraitImg = [UIImage scaleToSize:portraitImg];
portraitImg = [portraitImg fixOrientation];
NSData *imageData = [NSData compressImage:portraitImg];
[formData appendPartWithFileData:imageData
name:[NSString stringWithFormat:@"img.img%d", i+1]
fileName:@"image.png"
mimeType:@"image/png"];
}
} success:^(AFHTTPRequestOperation * _Nonnull operation, id _Nonnull responseObject) {
NSLog(@"成功");
} failure:^(AFHTTPRequestOperation * _Nullable operation, NSError * _Nonnull error) {
NSLog(@"失败");
dispatch_async(dispatch_get_main_queue(),^{failure(error);});
}];
Voici quelques questions :
Il y a quelques contradictions dans les paramètres mime :
Vous avez posé deux mimes à ces deux endroits,
multipart/form-data
etimage/png
. Lequel est correct ? Besoin de communiquer avec le backend.Contactons le backend pour vérifier. Avez-vous reçu votre demande ? Quel contenu est demandé ? Qu'est-ce qu'il a rendu ? Cette erreur semble être généralement signalée lors de l'analyse de json. Peut-être que l'arrière-plan ne renvoie pas de json valide. De plus, votre demande consiste à télécharger plusieurs fichiers à la fois. Je ne sais pas si votre interface backend le prend en charge. Vous pouvez essayer de télécharger une seule image.
Il n'est pas nécessaire d'ajuster le bloc AFNetworking
dispatch_async(dispatch_get_main_queue()...
Il vous a déjà aidé à revenir au thread principal pour l'exécution.Pouvez-vous imprimer les données d'imageData ?
L'avez-vous résolu ?
J'ai également rencontré le rapport Les données n'ont pas pu être lues car elles ne sont pas dans le bon format.
Mais en fait, le téléchargement de l'image a réussi
Code client :- (IBAction)upload :(id )expéditeur {
[manager POST:url3 paramètres:nil constructingBodyWithBlock:^(id<AFMultipartFormData> _Nonnull formData) {
}
Code backend (python) :
classe recevoir(restful.Resource) :
api.add_resource(receive, '/upload', méthodes=['POST'])