का उपयोग करके आईपैड ऐप से नोड जेएस सर्वर पर अपलोड छवि अपलोड करें मैं जावास्क्रिप्ट और नोड जेएस के लिए बहुत नया हूं। मैं मल्टीपार्टी मॉड्यूल का उपयोग करके नोड जेएस (एक्सप्रेस जेएस) के एपीआई को आराम करने के लिए अपने आईपैड ऐप से छवि अपलोड करने पर काम कर रहा हूं।मल्टीपार्टी
यहां मेरी छवि अपलोड कोड उद्देश्य सी में है।
NSData *imgData = UIImageJPEGRepresentation(img.image, 0.2);
NSString *urlString = @"http://localhost:3000/api/uploadimage";
NSString *str = @"displayImage";
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"];
NSString *contentType = [NSString stringWithFormat:@"multipart/form-data; boundary=%@", boundary];
[request setValue: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=\"currentEventID\"\r\n\r\n"] dataUsingEncoding:NSUTF8StringEncoding]];
[body appendData:[@"52344457901000006" dataUsingEncoding:NSUTF8StringEncoding]];
if (imgData) {
[body appendData:[[NSString stringWithFormat:@"\r\n--%@\r\n", boundary] dataUsingEncoding:NSUTF8StringEncoding]];
// [body appendData:[NSString stringWithFormat:@"Content-Disposition: form-data; name=\"displayImage\"; filename=\"myimage.jpg\"\r\n"]];
[body appendData:[[NSString stringWithFormat:@"Content-Disposition: form-data; name=\"%@\"; filename=\"myimage.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]];
[request setHTTPBody:body];
[request setURL:[NSURL URLWithString:urlString]];
NSLog(@"HttpBody = %@",request.HTTPBody);
connectionSave = [[NSURLConnection alloc] initWithRequest:request delegate:self];
अनुरोध शरीर डेटा कंसोल पर मुद्रित किया जाता है।
सर्वर पक्ष पर छवि प्राप्त करने के लिए मैं इस उदाहरण का जिक्र कर रहा हूं। [https://github.com/strongloop/express/blob/master/examples/multipart/index.js][1]
इस उदाहरण में, वे var form = new multiparty.Form() बना रहे हैं; पोस्ट विधि में। लेकिन मैं ब्राउज़र से नहीं एप्लिकेशन से छवि भेज रहा हूं इसलिए मेरे पास कोई ऐसा फॉर्म नहीं है जिसमें इनपुट प्रकार परिभाषित किए गए हों। छवि और अन्य स्ट्रिंग पैरामीटर प्राप्त करने के लिए मैं यह REST API कैसे लिख सकता हूं?
var express = require('express');
var http = require('http');
var util = require('util')
var multiparty = require('multiparty');
var app = express();
var bodyParser = require('body-parser');
app.use(bodyParser.urlencoded({
extended: true
}));
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({limit:'10mb', extended: true}));
app.use(bodyParser.json({limit:'10mb'}));
app.post('/api/uploadimage', function(req, res, next){
var form = new multiparty.Form();
console.log(req.body);
});
इसके अलावा मुझे रिक्त स्थान मिल रहा है। अग्रिम में धन्यवाद !! :)
मैं node.js सामान से बात नहीं कर सकता, लेकिन आप 'imgData' जोड़ने के बाद और अंतिम" - (सीमा) - "के बाद एक अतिरिक्त \ r \ n सही जोड़ रहे हैं। टर्मिनेटर। मेरी समझ यह है कि आप पेलोड और अगली सीमा विभाजक के बाद केवल एक \ r \ n चाहते हैं। – Rob
धन्यवाद लेकिन मुझे नहीं लगता कि कोई समस्या पैदा होगी :) – jasmine
लेकिन एक समस्या है: आप अनावश्यक रूप से फ़ाइल के अंत में दो बाइट्स, '0 डी 0 ए' जोड़ रहे हैं। यह पता चला है कि अधिकांश छवि दिनचर्या इन अतिरिक्त बाइटों को अनदेखा कर देगी, लेकिन ऐसा करने के लिए यह गलत है। – Rob