deno.land / x / sheetjs@v0.18.3 / demos / function / LambdaProxy / index.js

نووسراو ببینە
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
/* xlsx.js (C) 2013-present SheetJS -- http://sheetjs.com *//* eslint-env node */// base64 sheetjs.xlsb | curl -F "data=@-;filename=test.xlsb" http://localhost:3000/LambdaProxy
'use strict';var XLSX = require('xlsx');var Busboy = require('busboy');
exports.handler = function(event, context, callback) { /* set up busboy */ var ctype = event.headers['Content-Type']||event.headers['content-type']; var bb = new Busboy({headers:{'content-type':ctype}});
/* busboy is evented; accumulate the fields and files manually */ var fields = {}, files = {}; bb.on('error', function(err) { console.log('err', err); callback(err); }); bb.on('field', function(fieldname, val) {fields[fieldname] = val }); bb.on('file', function(fieldname, file, filename) { /* concatenate the individual data buffers */ var buffers = []; file.on('data', function(data) { buffers.push(data); }); file.on('end', function() { files[fieldname] = [Buffer.concat(buffers), filename]; }); });
/* on the finish event, all of the fields and files are ready */ bb.on('finish', function() { /* grab the first file */ var f = files[Object.keys(files)[0]]; if(!f) callback(new Error("Must submit a file for processing!"));
/* f[0] is a buffer, convert to string and interpret as Base64 */ var wb = XLSX.read(f[0].toString(), {type:"base64"});
/* grab first worksheet and convert to CSV */ var ws = wb.Sheets[wb.SheetNames[0]]; callback(null, { body: XLSX.utils.sheet_to_csv(ws) }); });
bb.end(event.body);};
sheetjs

Version Info

Tagged at
2 years ago