更新:此问题已于 2011 年 5 月 16 日在phonegap github 存储库中修复。
我有以下 Objective-C 代码:
NSData *photoData = [NSData dataWithContentsOfFile:photoPath];
NSMutableData *body = [NSMutableData data];
[body appendData:[[NSString stringWithFormat:@"--%@\r\n", boundary] dataUsingEncoding:NSUTF8StringEncoding]];
[body appendData:[[NSString stringWithFormat:@"Content-Disposition: form-data; name=\"photo-file\"; filename=\"%@\"\r\n", " my-photo.jpg"] dataUsingEncoding:NSUTF8StringEncoding]];
[body appendData:[@"Content-Type: image/jpeg\r\n\r\n" dataUsingEncoding:NSUTF8StringEncoding]];
[body appendData:photoData];
[body appendData:[[NSString stringWithFormat:@"\r\n--%@\r\n", boundary] dataUsingEncoding:NSUTF8StringEncoding]];
[request setHTTPBody:body];
[request addValue:[NSString stringWithFormat:@"%d", body.length] forHTTPHeaderField: @"Content-Length"];
[[NSURLConnection alloc] initWithRequest:request delegate:appDelegate];
[photoData release];
[body release];
[request release];
我正在尝试将图像从iPhone发布到使用node-formidable的node.js服务器。服务器已经可以正常处理从浏览器发布的图像,但是当我尝试从 iPhone 发布图像时,出现以下错误:
Error: MultipartParser.end(): stream ended unexpectedly at MultipartParser.end (/formidable/1.0.0/package/lib/formidable/multipart_parser.js:301:12) at IncomingMessage.anonymous (formidable/1.0.0/package/lib/formidable/incoming_form.js:80:30) at IncomingMessage.emit (events.js:61:17) at HTTPParser.onMessageComplete (http.js:132:23) at Socket.ondata (http.js:1001:22) at Socket._onReadable (net.js:677:27) at IOWatcher.onReadable as callback (net.js:177:10)
图像已正确保存在服务器的临时文件夹中,但是在尝试解析表单时,它是一个 Node 强大的会引发错误的 Node 。
最佳答案
显然,强大对于终点的边界是相当挑剔的。试试这个:
NSMutableData* body = [NSMutableData data];
[body appendData:[[NSString stringWithFormat:@"--%@\r\n", boundary] dataUsingEncoding:NSUTF8StringEncoding]];
[body appendData:[[NSString stringWithFormat:@"Content-Disposition: form-data; name=\"image\"; filename=\"%@\"\r\n", imageName] dataUsingEncoding:NSUTF8StringEncoding]];
[body appendData:[[NSString stringWithFormat:@"Content-Type: %@\r\n\r\n", @"image/jpeg"] dataUsingEncoding:NSUTF8StringEncoding]];
[body appendData:data];
[body appendData:[[NSString stringWithFormat:@"\r\n--%@--\r\n",boundary] dataUsingEncoding:NSUTF8StringEncoding]];
[urlRequest setHTTPBody:body];
关于iphone - 如何正确地将文件从 iPhone 发布到使用 node-formidable 的 node.js 服务器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5684649/