Я понял, что вы должны сделать это: -NSString * filePath = [записанный путь TmpFile]; и сделайте [запрос addFile: filePath forKey: @ "userfile"];
аюсь загрузить аудиофайл в формате "caf" с iPhone на веб-сервер. Используемые коды приведены ниже. Проблема в том, что я не получаю никакой файл для загрузки, в PHP эхо не выводится для имен файлов! Любая помощь будет принята с благодарностью.
Код, который я использую в конце iPhone:
NSData *fileData=[NSData dataWithContentsOfURL:recordedTmpFile];
NSURL *url=[NSURL URLWithString:@"http://somelink.com/upload.php"];
NSMutableURLRequest *request=[NSMutableURLRequest requestWithURL:url];
[request setHTTPMethod:@"POST"];
NSString *boundary = [NSString stringWithString:@"---------------------------14737809831466499882746641449"];
NSString *contentType = [NSString stringWithFormat:@"audio/x-caf; boundary=%@",boundary];
[request setValue:contentType forHTTPHeaderField: @"Content-Type"];
NSMutableData *body = [NSMutableData data];
[body appendData:[[NSString stringWithFormat:@"\r\n--%@\r\n",boundary] dataUsingEncoding:NSUTF8StringEncoding]];
[body appendData:[[NSString stringWithFormat:@"Content-Disposition: form-data; name=\"userfile\"; filename=\"%@\"\r\n",[recordedTmpFile lastPathComponent]] dataUsingEncoding:NSUTF8StringEncoding]];
[body appendData:[[NSString stringWithString:@"Content-Type: audio/x-caf\r\n\r\n"] dataUsingEncoding:NSUTF8StringEncoding]];
[body appendData:fileData];
[body appendData:[[NSString stringWithFormat:@"\r\n--%@--\r\n",boundary] dataUsingEncoding:NSUTF8StringEncoding]];
[request setHTTPBody:body];
NSError *errr=nil;
NSURLResponse *resp=nil;
NSData *returnData = [NSURLConnection sendSynchronousRequest:request returningResponse:&resp error:&errr];
NSString *returnString = [[NSString alloc] initWithData:returnData encoding:NSUTF8StringEncoding];
И код PHP это:
echo "start";
echo "1".$_FILES['userfile']['name'];
echo "2".$_FILES['userfile']['type'];
echo "end";
Благодарю.
Ахсан
Редактировать № 1:
используя правку @Gypsa, я получаю сообщение об ошибке. Код и сообщение об ошибке следующие:
Код:
NSString *urlString = @"http://somelink/upload.php";
NSURL *url=[NSURL URLWithString:[urlString stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]];
ASIFormDataRequest *request=[ASIFormDataRequest requestWithURL:url];
NSLog(@"3333");
//NSString *
[reque,st addFile:recordedTmpFile forKey:@"userfile"];
[request setRequestMethod:@"POST"];
//[request setDelegate:self];
NSLog(@"555");
[request setTimeOutSeconds:500];
[request startSynchronous];
NSLog(@"666");
NSLog(@"responseStatusCode %i",[request responseStatusCode]);
NSLog(@"responseString %@",[request responseString]);
Сообщение об ошибке:
2011-06-01 07:06:10.819 viewer1[16473:207] -[NSURL length]: unrecognized selector sent to instance 0x5644900
2011-06-01 07:06:10.821 viewer1[16473:207] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[NSURL length]: unrecognized selector sent to instance 0x5644900'
terminate called after throwing an instance of 'NSException'
Редактирование # 2: Похоже, мне нужно было сделать адрес аудиофайла из NSURL в NSString, что я и сделал:
NSString urlString=[url absoluteString];
Однако, теперь я не получаю никакого ответа от моей страницы php .. ответ нулевой :(
Редактировать № 3:
Я получаю сообщение об ошибке:
responseError Error Domain=ASIHTTPRequestErrorDomain Code=6 "No file exists at file://localhost/var/folders/45/45y8AmvjHvyUUl0mCOpmC++++TI/-Tmp-/328620103851.caf" UserInfo=0x534e500 {NSLocalizedDescription=No file exists at file://localhost/var/folders/45/45y8AmvjHvyUUl0mCOpmC++++TI/-Tmp-/328620103851.caf}
Код состояния ответа - 0.
Изменить № 4:
Решено !!! Смотрите ответ :)