iOS post请求上传文件(OC)

来源:互联网 发布:热传导有限元软件 编辑:程序博客网 时间:2024/04/28 21:02


首先这是文本样式,实现代码如下

#define HTTP_CONTENT_BOUNDARY @"WANPUSH"

调用方法

[self httpPutUrl:urlStr FilePath:jpgPath DataType:@"multipart/form-data"];

-(BOOL)httpPutUrl:(NSString*)strUrl FilePath:(NSString*)filePath DataType:(NSString*)dataType {    strUrl = [strUrl stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];    NSURL* url = [NSURL URLWithString:strUrl];        NSMutableString *myString=[NSMutableString stringWithFormat:@"--%@\r\n",HTTP_CONTENT_BOUNDARY];    [myString appendFormat:@"Content-Disposition: form-data; name=\"username\"\r\n"];    [myString appendFormat:@"%@\r\n", [GTHttpManage sharedGTHttpManage].currentUserName];    [myString appendFormat:@"--%@\r\n", HTTP_CONTENT_BOUNDARY];    [myString appendFormat:@"Content-Disposition: form-data; name=\"Path\"\r\n"];    [myString appendFormat:@"sign\r\n"];//    [myString appendFormat:@"--%@\r\n", HTTP_CONTENT_BOUNDARY];//    [myString appendFormat:@"Content-Disposition: form-data; name=\"action\"\r\n"];//    [myString appendFormat:@"add\r\n"];            NSData* data = [NSData dataWithContentsOfFile:filePath];    NSString* fileName = [filePath lastPathComponent];    NSString* strBodyBegin = [NSString stringWithFormat:@"--%@\r\nContent-Disposition: form-data; name=\"%@\"; filename=\"%@\"\nContent-Type: %@\n\n", HTTP_CONTENT_BOUNDARY, @"file",  fileName, dataType];    NSString* strBodyEnd = [NSString stringWithFormat:@"\n--%@--",HTTP_CONTENT_BOUNDARY];        NSMutableData *httpBody = [NSMutableData data];    [httpBody appendData:[myString dataUsingEncoding:NSUTF8StringEncoding]];    [httpBody appendData:[strBodyBegin dataUsingEncoding:NSUTF8StringEncoding]];    [httpBody appendData:data];    [httpBody appendData:[strBodyEnd dataUsingEncoding:NSUTF8StringEncoding]];        NSMutableURLRequest* httpPutRequest = [[NSMutableURLRequest alloc] init];    [httpPutRequest setURL:url];    [httpPutRequest setHTTPMethod:@"POST"];    [httpPutRequest setTimeoutInterval: 60000];    [httpPutRequest setValue:[NSString stringWithFormat:@"%@", @(httpBody.length)] forHTTPHeaderField:@"Content-Length"];    [httpPutRequest setValue:[NSString stringWithFormat:@"multipart/form-data; boundary=%@",HTTP_CONTENT_BOUNDARY] forHTTPHeaderField:@"Content-Type"];    httpPutRequest.HTTPBody = httpBody;    NSURLSession *session = [NSURLSession sharedSession];    NSURLSessionDataTask *dataTask = [session dataTaskWithRequest:httpPutRequest completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) {        //data:服务器返回的回执数据(是否注册/登录...成功)        if(!error) {            NSString *returnDataStr = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];            NSLog(@"服务器成功返回的数据:%@",returnDataStr);        } else {            NSLog(@"请求失败%@", error);        }    }];    [dataTask resume];    return YES;}





0 0
原创粉丝点击