forked from sheetjs/sheetjs
		
	
		
			
	
	
		
			40 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
		
		
			
		
	
	
			40 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
|  | const functions = require('firebase-functions'); | ||
|  | const Busboy = require('busboy'); | ||
|  | const XLSX = require('xlsx'); | ||
|  | 
 | ||
|  | // // Create and Deploy Your First Cloud Functions
 | ||
|  | // // https://firebase.google.com/docs/functions/write-firebase-functions
 | ||
|  | //
 | ||
|  | exports.helloWorld = functions.https.onRequest((request, response) => { | ||
|  |  response.send("Hello from Firebase!"); | ||
|  | }); | ||
|  | 
 | ||
|  | exports.main = functions.https.onRequest((req, res) => { | ||
|  |   var bb = new Busboy({ | ||
|  |     headers: { | ||
|  |       'content-type': req.headers['content-type'] | ||
|  |     } | ||
|  |   }); | ||
|  |   let fields = {}; | ||
|  |   let files = {}; | ||
|  |   bb.on('field', (fieldname, val) => { | ||
|  |     fields[fieldname] = val; | ||
|  |   }); | ||
|  |   bb.on('file', (fieldname, file, filename) => { | ||
|  |     var buffers = []; | ||
|  |     file.on('data', (data) => { | ||
|  |       buffers.push(data); | ||
|  |     }); | ||
|  |     file.on('end', () => { | ||
|  |       files[fieldname] = [Buffer.concat(buffers), filename]; | ||
|  |     }); | ||
|  |   }); | ||
|  |   bb.on('finish', () => { | ||
|  |     let f = files[Object.keys(files)[0]]; | ||
|  |     const wb = XLSX.read(f[0], { type: "buffer" }); | ||
|  |     // Convert to CSV
 | ||
|  |     res.send(XLSX.utils.sheet_to_csv(wb.Sheets[wb.SheetNames[0]])); | ||
|  |   }); | ||
|  |   bb.end(req.body) | ||
|  | }); |