recherche

Maison  >  Questions et réponses  >  le corps du texte

iOS télécharger l'image sous forme de flux

L'entreprise télécharge des images. Le personnel côté serveur a déclaré que les images sont téléchargées via le streaming d'images. J'ai essayé les méthodes suivantes, mais aucune n'a fonctionné :

[manager POST:@"http://xxxxxxxx:8094/interface_normal/editorFile/uploadImages.do" parameters:nil constructingBodyWithBlock:^(id<AFMultipartFormData> formData) {
    NSData* imageData = UIImageJPEGRepresentation(images[i], 0.5);
    [formData appendPartWithFileData:imageData name:@"file" fileName:@"tupian.png" mimeType:@"image/png"];
} success:^(NSURLSessionDataTask *task, id responseObject) {
    NSDictionary *jsonDict = [NSJSONSerialization JSONObjectWithData:responseObject options:0 error:nil];
    
} failure:^(NSURLSessionDataTask *task, NSError *error) {
    
}];

Il existe également les méthodes suivantes :

NSData *data = UIImageJPEGRepresentation(image, 0.5f);
NSString *uploadUrl = [NSString stringWithFormat:@"%@editorFile/uploadImages.do", BASE_URL];
NSInputStream *imageStream = [[NSInputStream alloc] initWithData:data];

NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:uploadUrl]];
[request setHTTPMethod:@"POST"];
[request setValue:[NSString stringWithFormat:@"%ld", [data length]] forHTTPHeaderField:@"Content-Length"];
[request setValue:@"application/octet-stream" forHTTPHeaderField:@"Content-Type"];
AFHTTPRequestOperation *operation = [[AFHTTPRequestOperation alloc] initWithRequest:request];
operation.inputStream = imageStream;

[operation setCompletionBlockWithSuccess:^(AFHTTPRequestOperation *operation, id responseObject) {
    completionBlock(responseObject, nil);
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
    completionBlock(operation.responseObject,error);
}];

[operation start];

Le téléchargement a toujours échoué, aidez-moi à le résoudre

Il est possible de télécharger côté Android. L'interface de téléchargement d'images en utilisant Charles pour capturer des paquets sur Android est la suivante :

Les résultats de la capture de paquets sur iOS sont les suivants. Après avoir essayé de nombreuses méthodes, le serveur indique que le téléchargement a échoué

.

De plus, le serveur m'a dit que c'est ainsi qu'il avait obtenu le flux d'entrée, mais le flux d'entrée qu'il a obtenu de ma part était nul

InputStream is = request.getInputStream();
            
            DataInputStream input = new DataInputStream(is); 
            byte[] buf = new byte[2048];
            byte[] tb = new byte[input.readInt()];


怪我咯怪我咯2718 Il y a quelques jours862

répondre à tous(1)je répondrai

  • ringa_lee

    ringa_lee2017-06-06 09:54:38

    application/octet-stream

    répondre
    0
  • Annulerrépondre