我试图在我的 iPhone 应用程序中使用 ASIFormDataRequest 将我刚刚录制的视频发送到服务器,以及我可以用来标识视频所属的字符串。这样做的代码在这里:
-(void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info {
NSURL *urlvideo = [info objectForKey:UIImagePickerControllerMediaURL];
NSString *urlString=[urlvideo path];
NSLog(@"urlString=%@",urlString);
NSString *str = [NSString stringWithFormat:@"http://www.mysite.com/videodata.php"];
NSURL *url = [NSURL URLWithString:[str stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]];
ASIFormDataRequest *request = [ASIFormDataRequest requestWithURL:url];
NSData *patientData = [_patientCode dataUsingEncoding:NSUTF8StringEncoding];
[request setFile:urlString forKey:@"video"];
[request setData:patientData forKey:@"patientcode"];
[request setRequestMethod:@"POST"];
[request setDelegate:self];
[request startSynchronous];
NSLog(@"responseStatusCode: %i",[request responseStatusCode]);
NSLog(@"responseString: %@",[request responseString]);
[picker dismissViewControllerAnimated:YES completion:nil];
}
一切似乎都正常工作,我得到状态码 200 并且该方法按预期完成。但是,服务器上的 php 文件似乎没有收到任何内容。我将此行添加到我的服务器端 php 代码中:
echo(count($_POST));
这将返回 0,因此 ASIFormDataRequest 似乎没有实际发布任何内容。我觉得可能缺少一些简单的步骤,因为我以前从未使用过 ASIFormDataRequest,但我们将不胜感激任何帮助。
编辑:我更改了setData:patientData
to setPostValue:_patientCode
,现在帖子的一部分已正确发送,所以看起来好像setPostValue
有效setData
,但setFile
没有。