2012-07-27 2 views
1

현재 파일의 NSMutableData 표현 인 데이터가 [body appendData: [NSData dataWithData:data]]; 인 HTTP Post를 통해 파일을 업로드하고 있습니다. 어떻게 다른 속성을 설정하는 방법에 대한 갈 것 같은이 방법을 사용하여 콘텐츠 처분으로 - NSMutableURLRequest : setHTTPBody 대신 setHTTPBodyStream을 사용하여 파일 업로드

// Set content type to be form data 
NSString *boundary = [NSString stringWithString:@"---------------------------14737809831466499882746641449"]; 
NSString *contentType = [NSString stringWithFormat:@"multipart/form-data; boundary=%@", boundary]; 
[request addValue:contentType forHTTPHeaderField:@"Content-Type"]; 

// Set content type to be form data 
NSString *boundary = [NSString stringWithString:@"---------------------------14737809831466499882746641449"]; 
NSString *contentType = [NSString stringWithFormat:@"multipart/form-data; boundary=%@", boundary]; 
[request addValue:contentType forHTTPHeaderField:@"Content-Type"]; 

// Set up web request with HTTP post headers for 1 form field which is the image 
NSMutableData *body = [NSMutableData data]; 
[body appendData:[[NSString stringWithFormat:@"\r\n--%@\r\n", boundary] dataUsingEncoding:NSUTF8StringEncoding]]; 
[body appendData:[[NSString stringWithString:@"Content-Disposition: form-data; name=\"userfile\"; filename=\".jpg\"\r\n"] dataUsingEncoding:NSUTF8StringEncoding]]; 
[body appendData:[[NSString stringWithString:@"Content-Type: application/octet-stream\r\n\r\n"] dataUsingEncoding: NSUTF8StringEncoding]]; 
[body appendData: [NSData dataWithData:data]]; 
[body appendData:[[NSString stringWithFormat:@"\r\n--%@\r\n", boundary] dataUsingEncoding: NSUTF8StringEncoding]]; 

// Set the body 
[request setHTTPBody: body]; 

인해 제한 메모리에, 나는 setHTTPBodyStream를 사용하여 디스크에있는 파일의 위치를 ​​전달 업로드하기 위해 최선 읽었습니다?

답변

3

다중 부분 경계, 내용 유형 및 처리를 포함하여 전체 HTML 요청 본문을 포함하는 파일을 준비하고 setHTTPBodyStream에 사용해야합니다.

대안이 있습니다 (약간 까다로 보이는 서브 클래스 NSInputStream 및 ASIHTTPRequest와 같은 타사 라이브러리). 게시물 번호는 This이며 자세한 정보와 링크를 제공합니다.