5

NSURLSessionUploadTask을 사용하여 백그라운드에서 2GB의 대용량 파일을 업로드하려고합니다. 이 서비스는 멀티 파트 포맷을 사용하므로 백그라운드에서 업로드하려면 요청 본문이 포함 된 임시 파일을 생성하고 나서 uploadTask를 사용하여 업로드를 예약하고 파일 업로드가 완료되면 임시 파일을 삭제합니다 . 1.4 GB 업로드 후 작은 파일로NSURLSession 백그라운드에서 거대한 파일 업로드

NSURLSessionUploadTask *uploadTask = [[self backgroundNSURLSession] uploadTaskWithRequest:uploadRequest fromFile:filePath]; [uploadTask resume];

는 확인했다,하지만 난 2 GB의 비디오 파일을 업로드 할 때, 업로드가 실패합니다. 서버가 파일을 첨부하지 않았다는 오류 메시지를 반환합니다.

ASIHTTP로 업로드를 수행하면 업로드 파일을 ASIHTTP에서 NSURLSession으로 리팩토링합니다. 대용량 파일에서도 작동합니다.

if ([NSURLSessionConfiguration respondsToSelector:@selector(backgroundSessionConfigurationWithIdentifier:)]) { 
     self.configuration = [NSURLSessionConfiguration backgroundSessionConfigurationWithIdentifier:appID]; 
    } else { 
     self.configuration = [NSURLSessionConfiguration backgroundSessionConfiguration:appID]; 
    } 
    self.configuration.HTTPMaximumConnectionsPerHost = 1; 
    self.configuration.discretionary = YES; 
    self.configuration.timeoutIntervalForResource = 60*60; 
    self.configuration.timeoutIntervalForRequest = 60*60; 
    backgroundSession = [NSURLSession sessionWithConfiguration:self.configuration delegate:self delegateQueue:nil]; 

그래서 문제가 작은 파일의 업로드가 수행되어, 큰 파일만을위한 것입니다 :

이 내가 내 NSURLSession을 만드는 방법이다. 다른 누구도 같은 문제를 겪었습니까?

+0

timeoutIntervalForResource가 너무 낮아서 간단하지 않은 것이 확실합니까? –

+0

이것이 여전히 유용한 지 잘 모르겠지만 timeIntervalForResource 및 forRequest를 큰 값으로 변경했지만 여전히 동일한 문제가 있습니다. –

+1

질문을한지 2 년 후에, 그것은 큰 시간 간격이었습니다! –

답변

0

속성에 대한 Apple 개발자 설명에 따르면 discretionary 파일이 너무 큰 경우 시스템이 WIFI 연결과 같은 좋은 순간을 기다리고있을 수 있습니다.

임의로 스위치를 NO로 전환하고 다시 시도하십시오. 행운을 빕니다!

self.configuration.discretionary = NO;

+0

어쩌면 질문에 답하지 않을 수도 있습니다. 확실하게 대답해야하고 대답을 뒷받침하는 사실을 알려주십시오. –

+0

죄송합니다! 그것은 이해된다 ... 그것 나의 첫 번째 대답 – vibroto

+0

이것은 오래된 질문이다. 아마도 지금은 관련이 없다. 아마 iOS SDK 버그 일 수도 있고 서버 버그 일 수도있다. –