错误:多部分数据的意外结束] storage.Error:express.js-iOS(Objective-C)应用程序中的

我试图find这个问题的解决scheme,无法在node.js / express.js和iOS应用程序中find任何东西。 我的客户有要求不要使用任何第三方库。 所以,我不使用AFNetworking。 任何帮助,或者如果有人可以告诉为什么错误即将到来将不胜感激。

我正在尝试发送多部分表单数据,图像与文本。 每当我做POST我得到错误:多部分数据的意外结束。

iOS中POST的代码:

NSURL *url = [NSURL URLWithString:@"http://172.16.0.5:8080/upload"]; NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url]; [request setHTTPMethod:@"POST"]; NSString *boundary = @"YOUR_BOUNDARY_STRING"; NSString *contentType = [NSString stringWithFormat:@"multipart/form-data; boundary=%@", boundary]; [request addValue:contentType forHTTPHeaderField:@"Content-Type"]; NSMutableData *body = [NSMutableData data]; [body appendData:[[NSString stringWithFormat:@"\r\n--%@\r\n", boundary] dataUsingEncoding:NSUTF8StringEncoding]]; [body appendData:[[NSString stringWithFormat:@"Content-Disposition: form-data; name=\"photo\"; filename=\"%@.jpg\"\r\n", self.path] dataUsingEncoding:NSUTF8StringEncoding]]; [body appendData:[@"Content-Type: application/octet-stream\r\n\r\n" dataUsingEncoding:NSUTF8StringEncoding]]; [body appendData:[NSData dataWithData:self.imageData]]; [body appendData:[[NSString stringWithFormat:@"\r\n--%@\r\n", boundary] dataUsingEncoding:NSUTF8StringEncoding]]; [body appendData:[[NSString stringWithFormat:@"Content-Disposition: form-data; name=\"message\"\r\n\r\n%@", self.mealTitleTextField.text] dataUsingEncoding:NSUTF8StringEncoding]]; [body appendData:[[NSString stringWithFormat:@"\r\n--%@\r\n", boundary] dataUsingEncoding:NSUTF8StringEncoding]]; [body appendData:[[NSString stringWithFormat:@"Content-Disposition: form-data; name=\"user\"\r\n\r\n%d", 1] dataUsingEncoding:NSUTF8StringEncoding]]; [body appendData:[[NSString stringWithFormat:@"\r\n--%@\r\n", boundary] dataUsingEncoding:NSUTF8StringEncoding]]; [request setHTTPBody:body]; NSURLResponse *response; NSError *error; [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&error]; 

这是我得到图像文件path:

  NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); NSString *documentsDirectory = [paths objectAtIndex:0]; self.path = [documentsDirectory stringByAppendingPathComponent: @"test.png" ]; self.imageData = UIImagePNGRepresentation(image); [self.imageData writeToFile:self.path atomically:YES]; 

这里是服务器代码:

 router.post('/upload', function(req,res,next){ upload.single('photo')(req, res, function(err){ if (err) { console.log(err) res.send(err); return; } console.log(req.file); res.json({'ok':'ok'}); }); });`` 

您应该validation上传的表单数据的格式 – 可能会有一些LINE_END或LINE_START丢失,请参阅cordova-plugin-file-transfer Android实现作为参考。