我开发了一个ios应用程序,并用于制作服务器请求,我使用的是ASIHTTPRequest。我面临的问题是服务器请求超时,当我尝试上传大型文件。我已经尝试了SetData和SetFile方法,但是两者的问题都是一样的。我无法解决它。它吃了我的四天。我的代码如下。提前致谢。使用ASIFormDataRequest将大型文件上传到服务器时请求超时
- (void)syncTaskOnTheServer:(Tasks *)task ofTheUser:(NSString *)userId{
__block unsigned long long uploaded = 0;
ASIFormDataRequest *syncTask = [ASIFormDataRequest requestWithURL:[NSURL URLWithString:[NSString stringWithFormat:@"%@tasks",baseurl]]];
syncTask.shouldAttemptPersistentConnection = NO;
[syncTask addPostValue:userId forKey:@"UserId"];
[syncTask addPostValue:appId forKey:@"AppId"];
[syncTask addPostValue:[NSString stringWithFormat:@"%@",task.taskTitle] forKey:@"Title"];
[syncTask addPostValue:[NSString stringWithFormat:@"%@",task.notes] forKey:@"Description"];
[syncTask addPostValue:[NSString stringWithFormat:@"%@",task.priority] forKey:@"Priority"];
[syncTask addPostValue:[NSString stringWithFormat:@"%@",task.taskCategory] forKey:@"TaskCategory"];
[syncTask addPostValue:[NSString stringWithFormat:@"%@",[NSString stringWithFormat:@"%@",task.creationDate]] forKey:@"CreationDate"];
syncTask.shouldUseRFC2616RedirectBehaviour = YES;
NSString *path = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject];
if (![task.imagePath isEqualToString:@"No Image Attached"]) {
NSString *imageFilePath = [NSString stringWithFormat:@"%@/%@_image.jpg",path,task.taskurlSubPart];
UIImage *image = [UIImage imageWithContentsOfFile:imageFilePath];
NSData *imageData = UIImageJPEGRepresentation(image, 1.0);
NSLog(@"\n%@\n",task.taskurlSubPart);
[syncTask setData:imageData withFileName:[NSString stringWithFormat:@"%@.jpg",task.taskurlSubPart ] andContentType:@"image/jpeg" forKey:@"Image"];
/*
[syncTask setFile:imageFilePath withFileName:[NSString stringWithFormat:@"%@.jpg",task.taskurlSubPart] andContentType:@"image/jpeg" forKey:@"Image"];
*/
}
if (![task.audioURL isEqualToString:@"No Audio File"]) {
NSMutableString *audioFileName = [NSMutableString stringWithString:task.audioFileName];
[audioFileName appendString:@".caf"];
NSString *audioFilePath = [NSString stringWithFormat:@"%@/%@.caf",path,task.audioFileName];
NSData *audioData = [NSData dataWithContentsOfURL:[NSURL fileURLWithPath:audioFilePath]];
[syncTask setData:audioData withFileName:audioFileName andContentType:@"audio/x-caf" forKey:@"Audio"];
}
[syncTask setRequestMethod:@"POST"];
[syncTask setStartedBlock:^{
NSLog(@"start block");
}];
[syncTask setFailedBlock:^{
NSLog(@"\n%@\n",[syncTask error]);
NSString *serverResponse = [syncTask responseString];
WLParseServerResponse *parseResponse = [[WLParseServerResponse alloc] init];
[parseResponse parseSyncTaskResponse:serverResponse forTask:task];
[parseResponse release];
}];
[syncTask setCompletionBlock:^{
NSString *serverResponse = [syncTask responseString];
NSLog(@"\nserver response: %@\n",serverResponse);
WLParseServerResponse *parseResponse = [[WLParseServerResponse alloc] init];
[parseResponse parseSyncTaskResponse:serverResponse forTask:task];
[parseResponse release];
}];
[syncTask setHeadersReceivedBlock:^(NSDictionary *responseHeaders) {
NSLog(@"%@", responseHeaders);
}];
[syncTask setBytesSentBlock:^(unsigned long long size, unsigned long long total) {
uploaded += size;
NSLog(@"%llu, %llu", uploaded, total);
}];
[syncTask startAsynchronous];
}
+0
你的后端平台PHP/.NET /等? –
+0
@laxonline它是php –
+0
检查您的PHP ini文件“upload_max_filesize” –