2012-07-18 17 views
5

मैं नोड w/express का उपयोग करके एक छवि अपलोड करने का प्रयास कर रहा हूं और मुझे निम्न त्रुटि मिलती है। मैंने इस पर कुछ प्रश्न देखे हैं जो समस्या के कारण के रूप में एसिंच डीबी कॉल को इंगित करते हैं। मैं बॉडी पार्सर को सिद्धांत रूप में उपयोग करना चाहता हूं, बॉडी पार्सर को बस मुझे कनेक्ट करने के लिए पास करना चाहिए और फिर प्रबल होना चाहिए ताकि मैं उन समाधानों को पसंद करूंगा जो बॉडी पार्सर को अक्षम नहीं करते हैं।छवि अपलोड विफल रहता है w/nodejs एक्सप्रेस

मेरे मामले में, मैं कोई डीबी कॉल नहीं कर रहा हूं - मेरा सभी कोड नीचे कॉपी किया गया है। कोई भी प्रकाश जो इस पर बह सकता है उसकी सराहना की जाएगी।

500 Error: parser error, 40 of 44 bytes parsed at IncomingForm.write (/Users/me/Projects/Project/node_modules/express/node_modules/connect/node_modules/formidable/lib/incoming_form.js:145:17) at IncomingMessage. (/Users/me/Projects/Project/node_modules/express/node_modules/connect/node_modules/formidable/lib/incoming_form.js:95:12) at IncomingMessage.emit (events.js:64:17) at HTTPParser.onBody (http.js:121:23) at Socket.ondata (http.js:1026:22) at Socket._onReadable (net.js:683:27) at IOWatcher.onReadable [as callback] (net.js:177:10)

यहाँ मेरी app.js फ़ाइल (कॉफी स्क्रिप्ट) है:

express = require('express') 
routes = require('./routes') 
app = module.exports = express.createServer() 

app.configure(() -> 
    app.set('views', __dirname + '/views') 
    app.set('view engine', 'jade') 
    app.use(express.bodyParser({ 
    uploadDir: '/tmp/upload' 
    })) 
    app.use(express.methodOverride()) 
    app.use(express.cookieParser()) 
    app.use(app.router) 
    app.use(express.static(__dirname + '/public')) 
) 

app.configure('development',() -> 
    app.use(express.logger()) 
    app.use(express.errorHandler({ dumpExceptions: true, showStack: true })) 
) 

app.configure('test',() -> 
    app.use(express.logger()) 
    app.use(express.errorHandler({ dumpExceptions: true, showStack: true })) 
) 

app.configure('production',() -> 
    app.use(express.logger()) 
    app.use(express.errorHandler()) 
) 

app.get('/images/new', (req, res) -> 
    console.log("getting image form") 
    res.render('forms/image_upload', {title: 'Images'}) 
) 

app.post('/images', (req, res) -> 
    console.log("post run") 
    res.send('uploaded') 
) 

app.listen(3000,() -> 
    console.log("Express server listening on port %d in %s mode", app.address().port, app.settings.env) 
) 

यहाँ मेरी प्रपत्र आंशिक (जेड) है: यहाँ

form#new-images(action="/images", enctype="multipart/form-data", method="post") 
    input#image-url(placeholder="Enter image url", type="text") 
    input#image-files(type="file", multiple="multiple") 
    input#submit(type="submit", value="Upload") 

है मेरी संकुल (NPM ls हैं)

├─┬ [email protected] 
│ └── [email protected] 
├─┬ [email protected] 
│ ├─┬ [email protected] 
│ │ ├── [email protected] 
│ │ ├── [email protected] 
│ │ └── [email protected] 
│ └─┬ [email protected] 
│ └── [email protected] 
├─┬ [email protected] 
│ ├─┬ [email protected] 
│ │ └── [email protected] 
│ ├── [email protected] 
│ ├── [email protected] 
│ └── [email protected] 
├── [email protected] 
├── [email protected] 
├─┬ [email protected] 
│ ├── [email protected] 
│ └── [email protected] 
├── [email protected] 
├── [email protected] 
├─┬ [email protected] 
│ ├── [email protected] 
│ └─┬ [email protected] 
│ └── [email protected] 
├─┬ [email protected] 
│ └── [email protected] 
├─┬ [email protected] 
│ ├─┬ [email protected] 
│ │ ├── [email protected] 
│ │ ├── [email protected] 
│ │ └── [email protected] 
│ └── [email protected] 
├─┬ [email protected] 
│ ├── [email protected] 
│ ├── [email protected] 
│ └─┬ [email protected] 
│ ├─┬ [email protected] 
│ │ └── [email protected] 
│ ├── [email protected] 
│ ├─┬ [email protected] 
│ │ ├── [email protected] 
│ │ ├── [email protected] 
│ │ └── [email protected] 
│ └── [email protected] 
└── [email protected] 

उत्तर

19

मैंने पहले इस सटीक समस्या हुई। अपने प्रत्येक इनपुट टैग में "नाम" मान आज़माएं और जोड़ें। उसने मेरे लिए चाल बनाई।

+2

यह काम किया। मैं बिल्कुल वही समस्या कर रहा था। धन्यवाद! – user531065

+0

बिल्कुल सही जवाब। –

0

एक्सप्रेस जिथब एसी पर एक उदाहरण दिया गया है खुद गिनती:

https://github.com/visionmedia/express/blob/master/examples/multipart/app.js

आप इस की कोशिश की?

अद्यतन:

इसके अलावा, इस तो सवाल यह मदद कर सकता है: Uploading images using Node.js, Express, and Mongoose

+0

आपकी मदद के लिए धन्यवाद! – user531065

संबंधित मुद्दे