2013-09-04 36 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"からあなたは例を挙げることができますか? –

関連する問題