2016-09-22 3 views
0

ng-file-upload을 사용하는 웹 사이트에서 이미지 업로드를 위해 백엔드에 요청을 보냅니다. 이미지를 다른 크기로 변환합니다 & Amazon S3 서버으로 업로드하십시오. 웹에서 잘 작동합니다. 프런트 엔드 & 백엔드에는 JS 코드이 포함되어 있습니다.iOS 이미지 Multiparty와 GraphicsMagick을 사용하여 Node.js를 사용하여 S3에 업로드

iOS 앱에서 파일을 AWS SDK for iOS (으)로 업로드 할 수 있지만 너무 많은 시간이 걸리므로 시간 초과 요청이 항상 발생합니다. (NG-파일 업로드 - 다자간 & GraphicsMagick) 요구 사항,
사항에 따라 다음 다른 크기로 변환, 서버 (노드)을 iOS 앱에서 파일 업로드에 대한 종래의 방법을 사용하여

& 다음 에 업로드 아마존 서버 (S3).

그래서 우리는 전통적인 방법을 사용하여 이미지를 백엔드 서버에 업로드하고 있습니다.

코드 이미지를 업로드 우리는 Node.js를 백엔드에 다자간을 사용하고

NSMutableURLRequest *urlRequest = [NSMutableURLRequest 
              requestWithURL:url 
              cachePolicy:NSURLRequestUseProtocolCachePolicy 
              timeoutInterval:DEFAULT_TIMEOUT]; 

[urlRequest setHTTPMethod:@"POST"]; 

NSString *boundary = @"---------------------------14737809831464368775746641449"; 
NSString *contentType = [NSString stringWithFormat:@"multipart/form-data; boundary=%@",boundary]; 
[urlRequest addValue:contentType forHTTPHeaderField: @"Content-Type"]; 

NSMutableData *body = [NSMutableData data]; 

//Image 
if(imageData) 
{ 
    [body appendData:[[NSString stringWithFormat:@"\r\n--%@\r\n", boundary] dataUsingEncoding:NSUTF8StringEncoding]]; 
    [body appendData:[[NSString stringWithFormat:@"Content-Disposition: form-data; name=\"%@\"; filename=\"%@\"\r\n", imgName, imgName] dataUsingEncoding:NSUTF8StringEncoding]]; 

    [body appendData:[@"Content-Type: application/octet-stream\r\n\r\n" dataUsingEncoding:NSUTF8StringEncoding]]; 
    [body appendData:imageData]; 
    [body appendData:[[NSString stringWithFormat:@"\r\n"] dataUsingEncoding:NSUTF8StringEncoding]]; 
} 

[body appendData:[[NSString stringWithFormat:@"\r\n--%@--\r\n", boundary] dataUsingEncoding:NSUTF8StringEncoding]]; 

[urlRequest setHTTPBody:body]; 

. 추가 단계를 위해 파일 객체를 채울 수 없습니다. 백엔드에서 오류가 발생합니다.

파일 세부 사항 요청 헤더은 응용 프로그램에서 업로드하는 동안 백엔드에서 비어 있습니다.
'path'가 정의되지 않은과 같은 오류가 발생합니다.

그래서 우리는 파일이나 이미지를 백엔드로 보내지 않으므로 대화를 더 잘 처리하고 업로드 할 수 없습니다. 우리는이 장소에 갇혔다.

필요한 조치를 취하십시오. 어떤 도움을 주시면 감사하겠습니다.
미리 감사드립니다.

+1

서버 (노드)에서 한 번 확인하십시오. 스크립트 파일 이름은 iOS – sandy

+1

에서 보내는 것과 동일해야하며 서버에서 이미지를 업로드 할 때 이와 비슷한 방법으로 사용하고 있습니다. [본문 appendData : [[NSString stringWithFormat : @ "내용 - 처분 : 양식 데이터, 이름 = \"사용자 파일 \ " , 파일 이름 = \"% @ \ "\ r \ n", imgName] dataUsingEncoding : NSUTF8StringEncoding]]; – sandy

+0

@sandy 너무 고맙다. .. 내 하루를 구했다 !! 건배 :) –

답변

1

나는 당신이 두 단계를 수행하는 데 필요한 생각 -

1 서버에서 한 번 확인하십시오 (노드) 스크립트 파일 이름이 아이폰 OS에서 보내는 것과 동일해야합니다.

ios에서 가져온 이미지는 서버에 이미지를 업로드하는 데 사용됩니다. 서버 스크립트와

[body appendData:[[NSString stringWithFormat:@"Content-Disposition: form-data; name=\"userfile\" ; filename=\"%@\"\r\n", imgName] dataUsingEncoding:NSUTF8StringEncoding]]; 

이름 = \ "userfile로 \"이어야 일치합니다.

+1

정말 고마워요 .. 나는 이름 가치를 전달함으로써 실수를했다 .. :) –

관련 문제