我正在尝试使用 AFNetworking 上传文件,它可以在 iOS 模拟器上运行,但不能在真实设备上运行,我尝试了 2 种不同的方式,但相同。
有人可以帮我解决这个问题吗 非常感谢。
这是第一个代码
NSArray *paths = NSSearchPathForDirectoriesInDomains( NSDocumentDirectory, NSUserDomainMask, YES );
NSString *dir = [paths objectAtIndex:0];
NSString *mp3File = [dir stringByAppendingPathComponent:@"Mp3File.mp3"];
NSData* myData = [mp3File dataUsingEncoding:NSUTF8StringEncoding];
AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
NSDictionary *parameters = @{@"nid": nid, @"uid": [NSString stringWithFormat:@"%@", [appSet objectForKey:@"userid"]]};
AFHTTPRequestOperation *op = [manager POST:@"http://192.168.1.103/sample_Files/mp3.php" parameters:parameters constructingBodyWithBlock:^(id<AFMultipartFormData> formData) {
[formData appendPartWithFileData:myData name:@"userfile" fileName:[NSString stringWithFormat:@"%@.mp3", dateString] mimeType:@"audio/mpeg"];
} success:^(AFHTTPRequestOperation *operation, id responseObject) {
NSLog(@"YESSS UPLOADED");
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
NSLog(@"%@", error);
}];
[op start];
这是另一个
AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
NSDictionary *parameters = @{@"nid": nid, @"uid": [NSString stringWithFormat:@"%@", [appSet objectForKey:@"userid"]]};
NSString *documentsPath = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)[0];
NSString *filePath = [documentsPath stringByAppendingPathComponent:@"Mp3File.mp3"];
NSURL *fileURL = [NSURL fileURLWithPath:filePath];
AFHTTPRequestOperation *op = [manager POST:@"http://192.168.1.103/sample_Files/mp3.php" parameters:parameters constructingBodyWithBlock:^(id<AFMultipartFormData> formData) {
NSError *error;
BOOL success = [formData appendPartWithFileURL:fileURL name:@"userfile" fileName:[NSString stringWithFormat:@"%@.mp3", dateString] mimeType:@"audio/mpeg" error:&error];
if (!success)
NSLog(@"appendPartWithFileURL error: %@", error);
} success:^(AFHTTPRequestOperation *operation, id responseObject) {
NSLog(@"Success: %@", responseObject);
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
NSLog(@"Error: %@", error);
}];
[op start];
最佳答案
据我所知,它看起来是正确的。
您是否在 FAILURE 上设置了断点以查看 NSERROR 响应是什么?
这是一个示例 URL,它发布了一个非常相似的解决方案。
关于ios - AFNetworking文件上传,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30860867/