프로토콜을 사용하여 OneDrive
에 파일을 업로드하려고합니다. 문서는 이렇게 될 요청에 대해 설명iOS에서 OneDrive에 파일을 업로드하려고합니다. 내 요청에 무슨 문제가 있니?
전체 문서 페이지가 여기에 있습니다 : 그것은보다 커야합니다 덩어리가 아니라 덩어리의 크기 때문에 파일을 업로드 다루는 사실 OneDrive Large File Uploads
60 MB 작은 파일을 하나의 덩어리로 업로드하려고합니다. 여기 내 코드는 : 나는 시도간에
NSString *path = [[NSBundle mainBundle] pathForResource:@"download" ofType:@"jpeg"];
self.data = [NSData dataWithContentsOfFile:path];
NSString *boundary = @"---------------------------14737809831466499882746641449";
NSMutableData *body = [NSMutableData data];
[body appendData:[[NSString stringWithFormat:@"--%@\r\n", boundary] dataUsingEncoding:NSUTF8StringEncoding]];
[body appendData:[[NSString stringWithFormat:@"Content-Disposition: attachment; name=\"image\"; filename=\"image.jpg\"\r\n"] dataUsingEncoding:NSUTF8StringEncoding]];
[body appendData:[@"Content-Type: application/octet-stream\r\n\r\n" dataUsingEncoding:NSUTF8StringEncoding]];
[body appendData:[NSData dataWithData:self.data]];
[body appendData:[@"\r\n" dataUsingEncoding:NSUTF8StringEncoding]];
[body appendData:[[NSString stringWithFormat:@"--%@--\r\n", boundary] dataUsingEncoding:NSUTF8StringEncoding]];
length = body.length;
NSMutableURLRequest *urlRequest = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:self.urlString]];
urlRequest.HTTPMethod = @"POST";
[urlRequest setValue:@"BITS_POST" forHTTPHeaderField:@"X-Http-Method-Override"];
[urlRequest setValue:self.accessToken forHTTPHeaderField:@"Authorization"];
[urlRequest setValue:self.sessionId forHTTPHeaderField:@"BITS-Session-Id"];
[urlRequest setValue:@"Fragment" forHTTPHeaderField:@"BITS-Packet-Type"];
[urlRequest setValue:[NSString stringWithFormat:@"%d", length] forHTTPHeaderField:@"Content-Length"];
[urlRequest setValue:[NSString stringWithFormat:@"0-%d/%d", length - 1, length] forHTTPHeaderField:@"Content-Range"];
urlRequest.HTTPBody = body;
self.uploadConnection = [[NSURLConnection alloc] initWithRequest:urlRequest delegate:self startImmediately:YES];
나는 400 오류 및 X-ClientErrorCode
등 BadArgument
을받을 수 있습니다. 매개 변수 self.accessToken
및 self.sessionId
은 유효하며 SDK로부터 방금 수신되었습니다. 나는 그곳에서 무엇이 잘못되었는지 전혀 모른다. 아무도 나를 도울 수 있습니까? 나는 무엇을 잘못하고있을 것인가?
나는 세션, 브래드를 작성했다! 이봐 요, 세션 ID를 사용하고 있습니다. 세션 생성에 아무런 문제가 없으며 매력적으로 작동합니다. 그리고 청크를 업로드해야합니다. (같은 결과로, 하나의 파일을 단지 하나의 청크로 사용하고 있습니다.이 경우 중요하지 않다고 생각했습니다.) 직접 업로드 할 필요가 없습니다. , 나는 BITS가 필요해. 너는 iOS에서 그걸 해봤 니? –
바하니, 죄송합니다. 방금이 프로그램이 전체 세션이었고 세션 ID를 알지 못했습니다. : D 스트레이트 바디로 시도 할 수 있습니까? – Brad
이미했습니다. 나는 경계없이 노력했다. 아직도 400. 나는 모든 것을 시험해 보았다. 오늘 운 좋게도 6 시간을 보냈다. 당신은 어떤 언어로 그것을 한 적이 있습니까? 나는 단지 실례가 필요하다. –