2013-09-04 5 views
6

iOS 앱을 개발 중이며 서버 측 스크립팅에 node.js을 사용하고 있습니다. iOS 앱에서 서버로 이미지를 업로드 할 때 문제가 있습니다. 웹 페이지 양식에서 이미지를 업로드하는 경우 잘 작동합니다. 그러나 앱 측에서 업로드하는 경우 작동하지 않습니다.iOS 앱에서 node.js를 통해 서버로 이미지 업로드

//test file 
h3 Pic Upload 
form(action='/pic_upload', method='post',enctype='multipart/form-data') 
    | user_pic: 
    input(type='file', name='user_pic') 
    input(type='submit') 

//app.js 
var userlogin =require('./routes/userlogin'); 
app.post('/pic_upload', userlogin.picUpload); 

//userlogin.js 
//picUpload function 
exports.picUpload = function(req, res) { 
console.log(req.files); // showing undefined, when called from IOS app 
// pic upload script... 
}); 

데이터 또는 파일 매개 변수로 앱 측에서 이미지 전송을 시도했지만 작동하지 않았습니다. 어떻게 응용 프로그램 측면에서 파일 매개 변수를 보낼 수 있도록 쉽게 서버에 이미지를 업로드 할 수 있습니까? 친절하게 문제를 해결할 방법을 제안하십시오.

+0

클라이언트 측 코드를 표시 할 수 있습니까? – Orifjon

답변

8

이 코드는 내 응용 프로그램에서 작동합니다. 이 시도.

NSData *imgData = UIImageJPEGRepresentation(newImg, 0.2); 

NSString *str = @"displayImage"; 

    NSString *urlString = @"http://some.url.com/post"; 

    // create request 
    NSMutableURLRequest *request = [[NSMutableURLRequest alloc] init]; 
    [request setCachePolicy:NSURLRequestReloadIgnoringLocalCacheData]; 
    [request setHTTPShouldHandleCookies:NO]; 
    [request setTimeoutInterval:30]; 
    [request setURL:[NSURL URLWithString:urlString]]; 

    [request setHTTPMethod:@"POST"]; 

    NSString *boundary = [NSString stringWithFormat:@"---------------------------14737809831464368775746641449"]; 

    // set Content-Type in HTTP header 
    NSString *contentType = [NSString stringWithFormat:@"multipart/form-data; boundary=%@", boundary]; 
    [request setValue:contentType forHTTPHeaderField: @"Content-Type"]; 

    // post body 
    NSMutableData *body = [NSMutableData data]; 

    // add params (all params are strings) 
     [body appendData:[[NSString stringWithFormat:@"\r\n--%@\r\n", boundary] dataUsingEncoding:NSUTF8StringEncoding]]; 
     [body appendData:[[NSString stringWithFormat:@"Content-Disposition: form-data; name=\"currentEventID\"\r\n\r\n"] dataUsingEncoding:NSUTF8StringEncoding]]; 
     [body appendData:[@"52344457901000006" dataUsingEncoding:NSUTF8StringEncoding]]; 


    // add image data 
    if (imgData) { 
     [body appendData:[[NSString stringWithFormat:@"\r\n--%@\r\n", boundary] dataUsingEncoding:NSUTF8StringEncoding]]; 
     // [body appendData:[NSString stringWithFormat:@"Content-Disposition: form-data; name=\"displayImage\"; filename=\"image.jpg\"\r\n"]]; 
     [body appendData:[[NSString stringWithFormat:@"Content-Disposition: form-data; name=\"%@\"; filename=\"image.jpg\"\r\n", str] dataUsingEncoding:NSUTF8StringEncoding]]; 

     [body appendData:[@"Content-Type: image/jpeg\r\n\r\n" dataUsingEncoding:NSUTF8StringEncoding]]; 
     [body appendData:imgData]; 
     [body appendData:[[NSString stringWithFormat:@"\r\n"] dataUsingEncoding:NSUTF8StringEncoding]]; 
    } 

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

    // setting the body of the post to the reqeust 
    [request setHTTPBody:body]; 

    // set URL 
    [request setURL:[NSURL URLWithString:urlString]]; 

    NSString *bodyStr = [[NSString alloc]initWithData:body encoding:NSUTF8StringEncoding]; 
    NSLog(@" %@",bodyStr); 

    NSURLConnection *lot_Connection=[[NSURLConnection alloc]initWithRequest:request delegate:self]; 

    if(lot_Connection) 
    { 
     webdata = [[NSMutableData alloc] init]; 

    } 
+0

nodejs 서버에서이 이미지를 어떻게 얻습니까? "request.body"또는 "request.file"에서? 예제를 주시겠습니까? –

관련 문제