ios Upload Image and Text using HTTP POST

后端 未结 10 1982
执笔经年
执笔经年 2020-11-22 08:27

Thanks for reading.

I am new to iOS and I am trying to upload an Image and a text using multi-part form encoding in iOS.

The curl

10条回答
  •  礼貌的吻别
    2020-11-22 09:10

    Here is my similar network kit library for uploading files as multipart form:

    WebRequest *request = [[WebRequest alloc] initWithPath:@"...documents/create.json"];
    
    // optional attributes
    request.delegate = delegate;
    request.notificationName = @"NotificationDocumentUploaded";
    request.queue = myQueue;
    
    NSMutableData *body = [NSMutableData data];
    NSString *boundary = @"TeslaSchoolProjectFormBoundary";
    
    [body appendPartName:@"document[name]" value:@"Test" boundary:boundary];
    [body appendPartName:@"document[description]" value:@"This is a description" boundary:boundary];
    [body appendPartName:@"document[category]" value:@"Drama" boundary:boundary];
    ...
    [body appendPartName:@"commit" value:@"Save" boundary:boundary];
    NSData *fileData = [[NSData alloc] initWithContentsOfURL:someFileURL];
    [body appendPartFile:fileName name:@"document[file]" data:fileData mimeType:mimeType boundary:boundary];
    [body appendData:[[NSString stringWithFormat:@"--%@--\r\n", boundary] dataUsingEncoding:NSUTF8StringEncoding]];
    
    [request setHTTPBody:body];
    
    NSString *bodyLength = [NSString stringWithFormat:@"%lu",(unsigned long)[body length]];
    [request addValue:bodyLength forHTTPHeaderField:@"Content-Length"];
    [request setValue:[NSString stringWithFormat:@"multipart/form-data; charset=utf-8; boundary=%@", boundary] forHTTPHeaderField:@"Content-Type"];
    
    
    // optional values
    [request addValue:@"gzip,deflate,sdch" forHTTPHeaderField:@"Accept-Encoding"];
    [request addValue:@"max-age=0" forHTTPHeaderField:@"Cache-Control"];
    [request addValue:@"text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8" forHTTPHeaderField:@"Accept"];
    [request addValue:@"en-US,en;q=0.8,hr;q=0.6,it;q=0.4,sk;q=0.2,sl;q=0.2,sr;q=0.2" forHTTPHeaderField:@"Accept-Language"];
    
    
    [request setHTTPMethod:@"POST"];
    [WebRequestProcessor process:request];
    

    Use the delegate for notifying about uploading progress.

    Use the notificationName for notifying when request has finished.

    Use the queue for adding this request into your operation queue so it will be processed in right time.

提交回复
热议问题