2016-07-19 12 views
5

एंगुलर 2 सीएलआई प्रोजेक्ट में, मैंने फाइननल ने this वाडिन से अपलोड बटन लागू किया। बटन यूआई काम करता है, लेकिन मुझे नहीं पता कि वास्तव में इसे कहीं भी फ़ाइल अपलोड करने के लिए कैसे करें।फ़ाइल अपलोड के लिए कोणीय 2 सर्वर-साइड-श्रोता

मैं एक्सप्रेस सर्वर कि फ़ाइल अपलोड की सुनता है, multer या नोड सर्वर के बारे में समाधान ढूँढने रखने के लिए, और मैं सच में कैसे इस तरह के एक सर्वर लिखने के लिए पता नहीं है, जहां यह डाल करने के लिए, यह कैसे शुरू करने के लिए , इसका उपयोग कैसे करें, आदि .. मुझे लगा कि फाइल अपलोड के रूप में छोटा कुछ हासिल करना आसान होना चाहिए, लेकिन ऐसा नहीं लगता है।

सरल समाधान क्या है कोणीय 2 के साथ लागू करने के लिए बटन को वास्तव में कहीं भी फाइल अपलोड करने के लिए ताकि मैं उन्हें बाद में डाउनलोड कर सकूं?

+0

अच्छी तरह से आप फ़ाइलों को अपलोड करने की योजना कहां रखते हैं? – tymeJV

+0

स्थानीय डिस्क, फायरबेस, ड्रॉपबॉक्स, कहीं भी बेहतर आसान है। –

+0

अच्छी तरह से .. वास्तव में सर्वर साइड अपलोड इस बात पर निर्भर करता है कि आप अपने सर्वर पर किस तकनीक का उपयोग कर रहे हैं। पहले इसे उठाओ। – toskv

उत्तर

8

ng2-uploader रेपो में समाधान मिला और Vaadin Upload के साथ काम करने के लिए अनुकूलित किया गया।

component.html

<div *ngIf="newName.valid"> 
      <vaadin-upload 
        target="http://localhost:10050/upload" 
      </vaadin-upload> 
    </div> 

server.js

'use strict'; 

const Hapi  = require('hapi'); 
const Inert  = require('inert'); 
const Md5   = require('md5'); 
const Multiparty = require('multiparty'); 
const fs   = require('fs'); 
const path  = require('path'); 
const server  = new Hapi.Server(); 

server.connection({ port: 10050, routes: { cors: true } }); 
server.register(Inert, (err) => {}); 

const upload = { 
    payload: { 
    maxBytes: 209715200, 
    output: 'stream', 
    parse: false 
    }, 
    handler: (request, reply) => { 
    const form = new Multiparty.Form(); 
    form.parse(request.payload, (err, fields, files) => { 
     if (err) { 
     return reply({status: false, msg: err}); 
     } 

     let responseData = []; 

     files.file.forEach((file) => { 
     let fileData = fs.readFileSync(file.path); 

     const originalName = file.originalFilename; 

     const generatedName = Md5(new Date().toString() + 
      originalName) + path.extname(originalName); 

     const filePath = path.resolve(__dirname, 'uploads', 
      originalName); 

     fs.writeFileSync(filePath, fileData); 
     const data = { 
      originalName: originalName, 
      generatedName: generatedName 
     }; 

     responseData.push(data); 
     }); 

     reply({status: true, data: responseData}); 
    }); 
    } 
}; 

const uploads = { 
    handler: { 
    directory: { 
     path: path.resolve(__dirname, 'uploads') 
    } 
    } 
}; 

server.route([ 
    { method: 'POST', path: '/upload',   config: upload }, 
    { method: 'GET', path: '/uploads/{path*}', config: uploads } 
]); 

server.start(() => { 
    console.log('Upload server running at', server.info.uri); 
}); 

और जो लोग server.js स्टार्टअप this is an awesome solution परीक्षण किया है और काम कर रहा पर चल जरूरत के लिए एक बोनस।

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