2016-04-18 14 views
0

現在、Objective CでUIImageとNSStringを取り込み、サーバーにPOST要求を行うメソッドを記述しようとしています。残念ながら、私は何かを送るのが難しいです。 HTMLフォームでフォームを試したところ、写真とパラメータを正常にアップロードできました。しかし、私は私のiOSアプリでそれを複製することができません。 POSTリクエストを作成しようとすると404エラーが発生します。AFnetworking 3.0でマルチパート形式のデータを送信できません

Githubページに従ったマルチフォームデータPOSTリクエストを送信する2つの方法を試しましたが、成功しませんでした。 XcodeでUIImageをデバッグしましたが、実際には存在することがわかりました。私はそれが私が送信しているパラメータと関係があると思っています。パラメータはformDataAppendの一部であるか、または私が以下で行った辞書のようなものでしょうか?

コメント部分はGithubのチュートリアルに対応しています。コメントアウトされていないセクションには、Stackoverflowをブラウズしてもまだ役に立たない部分が含まれています。以下でここ

+(void) uploadPhotoWithID:(NSString *)ownerID andPhotoImage:(UIImage *)image andCompletionHandler:(void (^)(MZPhoto *, NSError *))callback{ 

    NSData *imageData = UIImageJPEGRepresentation(image, 1); 
    NSDictionary *parameters = @{@"owner_id": ownerID}; 

// NSMutableURLRequest *request = [[AFHTTPRequestSerializer serializer] multipartFormRequestWithMethod:@"POST" URLString:upload_photo_url parameters:parameters constructingBodyWithBlock:^(id<AFMultipartFormData> _Nonnull formData) { 
//  [formData appendPartWithFileData:imageData name:@"photo" fileName:@"temp.jpg" mimeType:@"image/jpeg"]; 
// } error:nil]; 
// AFURLSessionManager *manager = [[AFURLSessionManager alloc] initWithSessionConfiguration:[NSURLSessionConfiguration defaultSessionConfiguration]]; 
//  
// NSURLSessionUploadTask *uploadTask = [manager uploadTaskWithStreamedRequest:request progress:nil completionHandler:^(NSURLResponse * _Nonnull response, id _Nullable responseObject, NSError * _Nullable error) { 
//  if(error){ 
//   NSLog(@"File Upload Failed"); 
//    
//  } 
//  else{ 
//   NSLog(@" %@", responseObject); 
//   MZPhoto *photo = [[MZPhoto alloc] initWithDictionary:responseObject error:nil]; 
//   callback(photo, nil); 
//  } 
// }]; 
    AFHTTPSessionManager *manager = [[AFHTTPSessionManager alloc] initWithBaseURL:[NSURL URLWithString:upload_photo_url]]; 
    [manager POST:upload_photo_url parameters:parameters constructingBodyWithBlock:^(id<AFMultipartFormData> _Nonnull formData) { 
     [formData appendPartWithFileData:imageData name:@"photo" fileName:@"photo.jpg" mimeType:@"image/jpeg"]; 
    } progress:nil 
      success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject) { 
       NSLog(@" %@", responseObject); 
      } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) { 
       NSLog(@" Failed"); 
      }]; 



} 

私のNode.jsの機能があり、

exports.upload_photo = function(req, res, next) { 
    var owner_id = req.body.owner_id; 
    console.log(owner_id); 
    pg.connect(connectionString, function(err, client, done) { 
     if (err) { 
      done(); 
      console.log(err); 
      return res.status(500).json({success: false, data: err}); 
     } 

     var query = client.query("INSERT INTO photos (likes, dislikes, user_id) " + 
            "VALUES (0, 0, $1) RETURNING photo_id, likes, dislikes, user_id", [owner_id]); 
     var result; 
     console.log(req.file); 

     query.on('row', function(row) { 
      row.file_url = baseFileURL + row.photo_id + '.jpg'; 
      result = row; 
     }); 

     query.on('end', function() { 
      done(); 
      fs.rename('./static/photos/' + req.file.filename, './static/photos/' + result.photo_id + '.jpg', function(err) { 
       if(err) console.log("Error Renaming the file!"); 
       return res.json(result); 
      }); 
     }); 
    }); 
    console.log("Received photo upload from: " + owner_id); 
} 

答えて

0

てみfunction

- (void) postServerRequest:(NSDictionary *)paramDict withData:(NSData*)fileData andType:(uploadType)uploadType Callback:(ResponseBlock) block{ 

    NSString * strServiceURL = @"Your Webservice URL"; 


    AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager]; 
    manager.requestSerializer = [AFJSONRequestSerializer serializer]; 
    manager.responseSerializer = [AFJSONResponseSerializer serializer]; 
    [manager.requestSerializer setValue:@"multipart/form-data" forHTTPHeaderField:@"Content-Type"]; 


    [manager POST:strServiceURL parameters:paramDict constructingBodyWithBlock:^(id<AFMultipartFormData> formData) { 
     if (fileData!=nil){ 
      [formData appendPartWithFileData:fileData name:@"Key name on which you will upload file" fileName:@"Image name" mimeType:@"image/jpeg"]; 
     } 

    } success:^(AFHTTPRequestOperation *operation, id responseObject) { 
     DLOG(@"Success: %@", responseObject); 
     block(responseObject,nil); 
    } failure:^(AFHTTPRequestOperation *operation, NSError *error) { 
     DLOG(@"Error: %@", error); 
     block (nil , error); 
    }]; 
} 
+0

くださいますPUTのためにも、この作品? –

関連する問題