AFnetworking 2.2.0 upload image on server issues

前端 未结 1 690
一个人的身影
一个人的身影 2020-12-06 14:26

The reason why ask you have to do it because I confuse about params.

As I understood there one way how to do it using multi part request.

This way offers us

相关标签:
1条回答
  • 2020-12-06 15:06

    Have you confirmed that the file is found at that location in your Documents folder? I'm also having trouble reconciling your programmatically determined file path (which is correct) with your string literal file path (which can easily be problematic). You should always programmatically determine the path, not using string literals (because when you reinstall the app, that path will change). What I think you need is something like:

    AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
    NSDictionary *parameters = @{@"foo": @"bar"};
    NSString *documentsPath = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)[0];
    NSString *filePath = [documentsPath stringByAppendingPathComponent:@"image.png"];
    NSURL *fileURL = [NSURL fileURLWithPath:filePath];
    
    [manager POST:@"http://example.com/resources.json" parameters:parameters constructingBodyWithBlock:^(id<AFMultipartFormData> formData) {
        NSError *error;
        BOOL success = [formData appendPartWithFileURL:fileURL name:@"image" fileName:filePath mimeType:@"image/png" error:&error];
        if (!success)
            NSLog(@"appendPartWithFileURL error: %@", error);
    } success:^(AFHTTPRequestOperation *operation, id responseObject) {
        NSLog(@"Success: %@", responseObject);
    } failure:^(AFHTTPRequestOperation *operation, NSError *error) {
        NSLog(@"Error: %@", error);
    }];
    

    Note, this programmatically determines the filePath (which is a path, not a URL), and then uses fileURLWithPath to convert that to a file URL. It also confirms whether it was successful or not, logging the error if not successful.

    Also note that this assumes your server is returning its response as JSON. If not, you'd have to change the responseSerializer.

    0 讨论(0)
提交回复
热议问题