我正在尝试使用post方法将文件上传到服务器。它是一个录制的文件。我无法这样做,这是我的代码。
NSString *name=[NSString stringWithFormat:@"18Sep15_032456PM.m4a"];
NSString *bodyString1 = [NSString stringWithFormat:@"Id=%d&type=%d&audio=%@",39,1,name];
//Entity_Id,charms_type,charm_audio
NSData *data1 = [bodyString1 dataUsingEncoding:NSUTF8StringEncoding];
NSString *strURL =@" "; // my server address
// NSData *file1Data = [NSData dataWithContentsOfFile:[recordedTmpFile path]];
// recordedTmpFile= your audio file path
NSMutableURLRequest *request = [[NSMutableURLRequest alloc] init] ;
[request setURL:[NSURL URLWithString:strURL]];
[request setHTTPMethod:@"POST"];
NSString *boundary = @"----------------------14737809831466499882746641449";
NSString *contentType = [NSString stringWithFormat:@"multipart/form-data; boundary=%@",boundary];
[request addValue:contentType forHTTPHeaderField: @"Content-Type"];
NSMutableData *body = [NSMutableData data];
[body appendData:[[NSString stringWithFormat:@"\r\n--%@\r\n",boundary] dataUsingEncoding:NSUTF8StringEncoding]];
[body appendData:[[NSString stringWithString:[NSString stringWithFormat:@"Content-Disposition: form-data; name=\"userfile\"; filename=\"%@\"\r\n",name]] dataUsingEncoding:NSUTF8StringEncoding]];
[body appendData:[@"Content-Type: application/octet-stream\r\n\r\n" dataUsingEncoding:NSUTF8StringEncoding]];
[body appendData:[NSData dataWithData:data1]];
[body appendData:[[NSString stringWithFormat:@"\r\n--%@--\r\n",boundary] dataUsingEncoding:NSUTF8StringEncoding]];
[request setHTTPBody:body];
NSData *returnData = [NSURLConnection sendSynchronousRequest:request returningResponse:nil error:nil];
NSString *returnString = [[NSString alloc] initWithData:returnData encoding:NSUTF8StringEncoding] ;
NSLog(@"Return String= %@",returnString);
关于我的问题,请帮助我。
答案 0 :(得分:0)
使用STHTTPRequest。只需2个文件即可包含在您的项目中并且易于使用。
示例:
STHTTPRequest *request = [STHTTPRequest requestWithURLString:@"urlHere"];
//Any parameter for request set here
NSString *strFileName=[NSString stringWithFormat:@"18Sep15_032456PM.m4a"];
request.POSTDictionary = @{ @"Id":@"39", @"type":"1"};
//upload file
NSData *filedata = [NSData dataWithContentsOfFile:filePathHere];
[request addDataToUpload:filedata parameterName:@"audio" mimeType:@"audio/mp4 m4a" fileName:strFileName];
//upload block here
request.uploadProgressBlock= ^(NSInteger bytesWritten,
NSInteger totalBytesWritten,
NSInteger totalBytesExpectedToWrite) {
// notify user of upload progress
// use the stream
}
//on completion
request.completionBlock = ^(NSDictionary *headers, NSString *body) {
NSLog(@"headers : %@\nBody : %@",headers,body);
};
//error block here
request.errorBlock = ^(NSError *error) {
NSLog(@"Error: %d", [error localizedDescription]);
};
//start request
[request startAsynchronous];