toror33

연락처 업로드

...@@ -38,6 +38,15 @@ ...@@ -38,6 +38,15 @@
38 "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.2.0.tgz", 38 "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.2.0.tgz",
39 "integrity": "sha512-apwXVmYVpQ34m/i71vrApRrRKCWQnZZF1+npOD0WV5xZFfwWOmKGQ2RWlfdy9vWITsenisM8M0Qeq8agcFHNiQ==" 39 "integrity": "sha512-apwXVmYVpQ34m/i71vrApRrRKCWQnZZF1+npOD0WV5xZFfwWOmKGQ2RWlfdy9vWITsenisM8M0Qeq8agcFHNiQ=="
40 }, 40 },
41 + "adler-32": {
42 + "version": "1.2.0",
43 + "resolved": "https://registry.npmjs.org/adler-32/-/adler-32-1.2.0.tgz",
44 + "integrity": "sha1-aj5r8KY5ALoVZSgIyxXGgT0aXyU=",
45 + "requires": {
46 + "exit-on-epipe": "~1.0.1",
47 + "printj": "~1.1.0"
48 + }
49 + },
41 "ajv": { 50 "ajv": {
42 "version": "6.12.2", 51 "version": "6.12.2",
43 "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.2.tgz", 52 "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.2.tgz",
...@@ -57,6 +66,11 @@ ...@@ -57,6 +66,11 @@
57 "color-convert": "^1.9.0" 66 "color-convert": "^1.9.0"
58 } 67 }
59 }, 68 },
69 + "append-field": {
70 + "version": "1.0.0",
71 + "resolved": "https://registry.npmjs.org/append-field/-/append-field-1.0.0.tgz",
72 + "integrity": "sha1-HjRA6RXwsSA9I3SOeO3XubW0PlY="
73 + },
60 "array-flatten": { 74 "array-flatten": {
61 "version": "1.1.1", 75 "version": "1.1.1",
62 "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", 76 "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz",
...@@ -196,6 +210,43 @@ ...@@ -196,6 +210,43 @@
196 "isarray": "^1.0.0" 210 "isarray": "^1.0.0"
197 } 211 }
198 }, 212 },
213 + "buffer-from": {
214 + "version": "1.1.1",
215 + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz",
216 + "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A=="
217 + },
218 + "busboy": {
219 + "version": "0.2.14",
220 + "resolved": "https://registry.npmjs.org/busboy/-/busboy-0.2.14.tgz",
221 + "integrity": "sha1-bCpiLvz0fFe7vh4qnDetNseSVFM=",
222 + "requires": {
223 + "dicer": "0.2.5",
224 + "readable-stream": "1.1.x"
225 + },
226 + "dependencies": {
227 + "isarray": {
228 + "version": "0.0.1",
229 + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz",
230 + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8="
231 + },
232 + "readable-stream": {
233 + "version": "1.1.14",
234 + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz",
235 + "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=",
236 + "requires": {
237 + "core-util-is": "~1.0.0",
238 + "inherits": "~2.0.1",
239 + "isarray": "0.0.1",
240 + "string_decoder": "~0.10.x"
241 + }
242 + },
243 + "string_decoder": {
244 + "version": "0.10.31",
245 + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz",
246 + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ="
247 + }
248 + }
249 + },
199 "bytes": { 250 "bytes": {
200 "version": "3.0.0", 251 "version": "3.0.0",
201 "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", 252 "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz",
...@@ -206,6 +257,17 @@ ...@@ -206,6 +257,17 @@
206 "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", 257 "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz",
207 "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=" 258 "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw="
208 }, 259 },
260 + "cfb": {
261 + "version": "1.1.4",
262 + "resolved": "https://registry.npmjs.org/cfb/-/cfb-1.1.4.tgz",
263 + "integrity": "sha512-rwFkl3aFO3f+ljR27YINwC0x8vPjyiEVbYbrTCKzspEf7Q++3THdfHVgJYNUbxNcupJECrLX+L40Mjm9hm/Bgw==",
264 + "requires": {
265 + "adler-32": "~1.2.0",
266 + "commander": "^2.16.0",
267 + "crc-32": "~1.2.0",
268 + "printj": "~1.1.2"
269 + }
270 + },
209 "chalk": { 271 "chalk": {
210 "version": "2.4.2", 272 "version": "2.4.2",
211 "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", 273 "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
...@@ -224,6 +286,22 @@ ...@@ -224,6 +286,22 @@
224 "is-regex": "^1.0.3" 286 "is-regex": "^1.0.3"
225 } 287 }
226 }, 288 },
289 + "codepage": {
290 + "version": "1.14.0",
291 + "resolved": "https://registry.npmjs.org/codepage/-/codepage-1.14.0.tgz",
292 + "integrity": "sha1-jL4lSBMjVZ19MHVxsP/5HnodL5k=",
293 + "requires": {
294 + "commander": "~2.14.1",
295 + "exit-on-epipe": "~1.0.1"
296 + },
297 + "dependencies": {
298 + "commander": {
299 + "version": "2.14.1",
300 + "resolved": "https://registry.npmjs.org/commander/-/commander-2.14.1.tgz",
301 + "integrity": "sha512-+YR16o3rK53SmWHU3rEM3tPAh2rwb1yPcQX5irVn7mb0gXbwuCCrnkbV5+PBfETdfg1vui07nM6PCG1zndcjQw=="
302 + }
303 + }
304 + },
227 "color-convert": { 305 "color-convert": {
228 "version": "1.9.3", 306 "version": "1.9.3",
229 "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", 307 "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
...@@ -245,11 +323,27 @@ ...@@ -245,11 +323,27 @@
245 "delayed-stream": "~1.0.0" 323 "delayed-stream": "~1.0.0"
246 } 324 }
247 }, 325 },
326 + "commander": {
327 + "version": "2.17.1",
328 + "resolved": "https://registry.npmjs.org/commander/-/commander-2.17.1.tgz",
329 + "integrity": "sha512-wPMUt6FnH2yzG95SA6mzjQOEKUU3aLaDEmzs1ti+1E9h+CsrZghRlqEM/EJ4KscsQVG8uNN4uVreUeT8+drlgg=="
330 + },
248 "concat-map": { 331 "concat-map": {
249 "version": "0.0.1", 332 "version": "0.0.1",
250 "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", 333 "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
251 "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" 334 "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s="
252 }, 335 },
336 + "concat-stream": {
337 + "version": "1.6.2",
338 + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz",
339 + "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==",
340 + "requires": {
341 + "buffer-from": "^1.0.0",
342 + "inherits": "^2.0.3",
343 + "readable-stream": "^2.2.2",
344 + "typedarray": "^0.0.6"
345 + }
346 + },
253 "constantinople": { 347 "constantinople": {
254 "version": "4.0.1", 348 "version": "4.0.1",
255 "resolved": "https://registry.npmjs.org/constantinople/-/constantinople-4.0.1.tgz", 349 "resolved": "https://registry.npmjs.org/constantinople/-/constantinople-4.0.1.tgz",
...@@ -293,6 +387,15 @@ ...@@ -293,6 +387,15 @@
293 "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", 387 "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz",
294 "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" 388 "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac="
295 }, 389 },
390 + "crc-32": {
391 + "version": "1.2.0",
392 + "resolved": "https://registry.npmjs.org/crc-32/-/crc-32-1.2.0.tgz",
393 + "integrity": "sha512-1uBwHxF+Y/4yF5G48fwnKq6QsIXheor3ZLPT80yGBV1oEUwpPojlEhQbWKVw1VwcTQyMGHK1/XMmTjmlsmTTGA==",
394 + "requires": {
395 + "exit-on-epipe": "~1.0.1",
396 + "printj": "~1.1.0"
397 + }
398 + },
296 "crypto-js": { 399 "crypto-js": {
297 "version": "4.0.0", 400 "version": "4.0.0",
298 "resolved": "https://registry.npmjs.org/crypto-js/-/crypto-js-4.0.0.tgz", 401 "resolved": "https://registry.npmjs.org/crypto-js/-/crypto-js-4.0.0.tgz",
...@@ -329,6 +432,38 @@ ...@@ -329,6 +432,38 @@
329 "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", 432 "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz",
330 "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=" 433 "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA="
331 }, 434 },
435 + "dicer": {
436 + "version": "0.2.5",
437 + "resolved": "https://registry.npmjs.org/dicer/-/dicer-0.2.5.tgz",
438 + "integrity": "sha1-WZbAhrszIYyBLAkL3cCc0S+stw8=",
439 + "requires": {
440 + "readable-stream": "1.1.x",
441 + "streamsearch": "0.1.2"
442 + },
443 + "dependencies": {
444 + "isarray": {
445 + "version": "0.0.1",
446 + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz",
447 + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8="
448 + },
449 + "readable-stream": {
450 + "version": "1.1.14",
451 + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz",
452 + "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=",
453 + "requires": {
454 + "core-util-is": "~1.0.0",
455 + "inherits": "~2.0.1",
456 + "isarray": "0.0.1",
457 + "string_decoder": "~0.10.x"
458 + }
459 + },
460 + "string_decoder": {
461 + "version": "0.10.31",
462 + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz",
463 + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ="
464 + }
465 + }
466 + },
332 "doctypes": { 467 "doctypes": {
333 "version": "1.1.0", 468 "version": "1.1.0",
334 "resolved": "https://registry.npmjs.org/doctypes/-/doctypes-1.1.0.tgz", 469 "resolved": "https://registry.npmjs.org/doctypes/-/doctypes-1.1.0.tgz",
...@@ -381,6 +516,11 @@ ...@@ -381,6 +516,11 @@
381 "resolved": "https://registry.npmjs.org/events/-/events-1.1.1.tgz", 516 "resolved": "https://registry.npmjs.org/events/-/events-1.1.1.tgz",
382 "integrity": "sha1-nr23Y1rQmccNzEwqH1AEKI6L2SQ=" 517 "integrity": "sha1-nr23Y1rQmccNzEwqH1AEKI6L2SQ="
383 }, 518 },
519 + "exit-on-epipe": {
520 + "version": "1.0.1",
521 + "resolved": "https://registry.npmjs.org/exit-on-epipe/-/exit-on-epipe-1.0.1.tgz",
522 + "integrity": "sha512-h2z5mrROTxce56S+pnvAV890uu7ls7f1kEvVGJbw1OlFH3/mlJ5bkXu0KRyW94v37zzHPiUd55iLn3DA7TjWpw=="
523 + },
384 "express": { 524 "express": {
385 "version": "4.16.4", 525 "version": "4.16.4",
386 "resolved": "https://registry.npmjs.org/express/-/express-4.16.4.tgz", 526 "resolved": "https://registry.npmjs.org/express/-/express-4.16.4.tgz",
...@@ -519,6 +659,11 @@ ...@@ -519,6 +659,11 @@
519 "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz", 659 "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz",
520 "integrity": "sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ=" 660 "integrity": "sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ="
521 }, 661 },
662 + "frac": {
663 + "version": "1.1.2",
664 + "resolved": "https://registry.npmjs.org/frac/-/frac-1.1.2.tgz",
665 + "integrity": "sha512-w/XBfkibaTl3YDqASwfDUqkna4Z2p9cFSr1aHDt0WoMTECnRfBOv2WArlZILlqgWlmdIlALXGpM2AOhEk5W3IA=="
666 + },
522 "fresh": { 667 "fresh": {
523 "version": "0.5.2", 668 "version": "0.5.2",
524 "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", 669 "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz",
...@@ -752,6 +897,19 @@ ...@@ -752,6 +897,19 @@
752 "brace-expansion": "^1.1.7" 897 "brace-expansion": "^1.1.7"
753 } 898 }
754 }, 899 },
900 + "minimist": {
901 + "version": "1.2.5",
902 + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz",
903 + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw=="
904 + },
905 + "mkdirp": {
906 + "version": "0.5.5",
907 + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz",
908 + "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==",
909 + "requires": {
910 + "minimist": "^1.2.5"
911 + }
912 + },
755 "moment": { 913 "moment": {
756 "version": "2.26.0", 914 "version": "2.26.0",
757 "resolved": "https://registry.npmjs.org/moment/-/moment-2.26.0.tgz", 915 "resolved": "https://registry.npmjs.org/moment/-/moment-2.26.0.tgz",
...@@ -774,6 +932,21 @@ ...@@ -774,6 +932,21 @@
774 "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", 932 "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
775 "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" 933 "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g="
776 }, 934 },
935 + "multer": {
936 + "version": "1.4.2",
937 + "resolved": "https://registry.npmjs.org/multer/-/multer-1.4.2.tgz",
938 + "integrity": "sha512-xY8pX7V+ybyUpbYMxtjM9KAiD9ixtg5/JkeKUTD6xilfDv0vzzOFcCp4Ljb1UU3tSOM3VTZtKo63OmzOrGi3Cg==",
939 + "requires": {
940 + "append-field": "^1.0.0",
941 + "busboy": "^0.2.11",
942 + "concat-stream": "^1.5.2",
943 + "mkdirp": "^0.5.1",
944 + "object-assign": "^4.1.1",
945 + "on-finished": "^2.3.0",
946 + "type-is": "^1.6.4",
947 + "xtend": "^4.0.0"
948 + }
949 + },
777 "mysql": { 950 "mysql": {
778 "version": "2.18.1", 951 "version": "2.18.1",
779 "resolved": "https://registry.npmjs.org/mysql/-/mysql-2.18.1.tgz", 952 "resolved": "https://registry.npmjs.org/mysql/-/mysql-2.18.1.tgz",
...@@ -852,6 +1025,11 @@ ...@@ -852,6 +1025,11 @@
852 "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", 1025 "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz",
853 "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=" 1026 "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns="
854 }, 1027 },
1028 + "printj": {
1029 + "version": "1.1.2",
1030 + "resolved": "https://registry.npmjs.org/printj/-/printj-1.1.2.tgz",
1031 + "integrity": "sha512-zA2SmoLaxZyArQTOPj5LXecR+RagfPSU5Kw1qP+jkWeNlrq+eJZyY2oS68SU1Z/7/myXM4lo9716laOFAVStCQ=="
1032 + },
855 "process-nextick-args": { 1033 "process-nextick-args": {
856 "version": "2.0.1", 1034 "version": "2.0.1",
857 "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", 1035 "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz",
...@@ -1132,6 +1310,14 @@ ...@@ -1132,6 +1310,14 @@
1132 "resolved": "https://registry.npmjs.org/sqlstring/-/sqlstring-2.3.1.tgz", 1310 "resolved": "https://registry.npmjs.org/sqlstring/-/sqlstring-2.3.1.tgz",
1133 "integrity": "sha1-R1OT/56RR5rqYtyvDKPRSYOn+0A=" 1311 "integrity": "sha1-R1OT/56RR5rqYtyvDKPRSYOn+0A="
1134 }, 1312 },
1313 + "ssf": {
1314 + "version": "0.10.3",
1315 + "resolved": "https://registry.npmjs.org/ssf/-/ssf-0.10.3.tgz",
1316 + "integrity": "sha512-pRuUdW0WwyB2doSqqjWyzwCD6PkfxpHAHdZp39K3dp/Hq7f+xfMwNAWIi16DyrRg4gg9c/RvLYkJTSawTPTm1w==",
1317 + "requires": {
1318 + "frac": "~1.1.2"
1319 + }
1320 + },
1135 "sshpk": { 1321 "sshpk": {
1136 "version": "1.16.1", 1322 "version": "1.16.1",
1137 "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz", 1323 "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz",
...@@ -1153,6 +1339,11 @@ ...@@ -1153,6 +1339,11 @@
1153 "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.4.0.tgz", 1339 "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.4.0.tgz",
1154 "integrity": "sha512-zhSCtt8v2NDrRlPQpCNtw/heZLtfUDqxBM1udqikb/Hbk52LK4nQSwr10u77iopCW5LsyHpuXS0GnEc48mLeew==" 1340 "integrity": "sha512-zhSCtt8v2NDrRlPQpCNtw/heZLtfUDqxBM1udqikb/Hbk52LK4nQSwr10u77iopCW5LsyHpuXS0GnEc48mLeew=="
1155 }, 1341 },
1342 + "streamsearch": {
1343 + "version": "0.1.2",
1344 + "resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-0.1.2.tgz",
1345 + "integrity": "sha1-gIudDlb8Jz2Am6VzOOkpkZoanxo="
1346 + },
1156 "string_decoder": { 1347 "string_decoder": {
1157 "version": "1.1.1", 1348 "version": "1.1.1",
1158 "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", 1349 "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
...@@ -1217,6 +1408,11 @@ ...@@ -1217,6 +1408,11 @@
1217 "mime-types": "~2.1.24" 1408 "mime-types": "~2.1.24"
1218 } 1409 }
1219 }, 1410 },
1411 + "typedarray": {
1412 + "version": "0.0.6",
1413 + "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz",
1414 + "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c="
1415 + },
1220 "uid-safe": { 1416 "uid-safe": {
1221 "version": "2.1.5", 1417 "version": "2.1.5",
1222 "resolved": "https://registry.npmjs.org/uid-safe/-/uid-safe-2.1.5.tgz", 1418 "resolved": "https://registry.npmjs.org/uid-safe/-/uid-safe-2.1.5.tgz",
...@@ -1300,6 +1496,26 @@ ...@@ -1300,6 +1496,26 @@
1300 "babel-walk": "3.0.0-canary-5" 1496 "babel-walk": "3.0.0-canary-5"
1301 } 1497 }
1302 }, 1498 },
1499 + "wmf": {
1500 + "version": "1.0.2",
1501 + "resolved": "https://registry.npmjs.org/wmf/-/wmf-1.0.2.tgz",
1502 + "integrity": "sha512-/p9K7bEh0Dj6WbXg4JG0xvLQmIadrner1bi45VMJTfnbVHsc7yIajZyoSoK60/dtVBs12Fm6WkUI5/3WAVsNMw=="
1503 + },
1504 + "xlsx": {
1505 + "version": "0.16.2",
1506 + "resolved": "https://registry.npmjs.org/xlsx/-/xlsx-0.16.2.tgz",
1507 + "integrity": "sha512-XTqOy7YpCUtGbvCYaCh1t1RsZ/y8cSCbZCOYtqqZ4/EmHkyv+/ghxmCvvR8yc4Tn5fhny+3j7voKwJaRlffNKA==",
1508 + "requires": {
1509 + "adler-32": "~1.2.0",
1510 + "cfb": "^1.1.4",
1511 + "codepage": "~1.14.0",
1512 + "commander": "~2.17.1",
1513 + "crc-32": "~1.2.0",
1514 + "exit-on-epipe": "~1.0.1",
1515 + "ssf": "~0.10.3",
1516 + "wmf": "~1.0.1"
1517 + }
1518 + },
1303 "xml2js": { 1519 "xml2js": {
1304 "version": "0.4.19", 1520 "version": "0.4.19",
1305 "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.4.19.tgz", 1521 "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.4.19.tgz",
...@@ -1313,6 +1529,11 @@ ...@@ -1313,6 +1529,11 @@
1313 "version": "9.0.7", 1529 "version": "9.0.7",
1314 "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-9.0.7.tgz", 1530 "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-9.0.7.tgz",
1315 "integrity": "sha1-Ey7mPS7FVlxVfiD0wi35rKaGsQ0=" 1531 "integrity": "sha1-Ey7mPS7FVlxVfiD0wi35rKaGsQ0="
1532 + },
1533 + "xtend": {
1534 + "version": "4.0.2",
1535 + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz",
1536 + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ=="
1316 } 1537 }
1317 } 1538 }
1318 } 1539 }
......
...@@ -17,9 +17,11 @@ ...@@ -17,9 +17,11 @@
17 "http-errors": "~1.6.3", 17 "http-errors": "~1.6.3",
18 "moment": "^2.26.0", 18 "moment": "^2.26.0",
19 "morgan": "~1.9.1", 19 "morgan": "~1.9.1",
20 + "multer": "^1.4.2",
20 "mysql": "^2.18.1", 21 "mysql": "^2.18.1",
21 "passport": "^0.4.1", 22 "passport": "^0.4.1",
22 "pug": "^3.0.0", 23 "pug": "^3.0.0",
23 - "request": "^2.88.2" 24 + "request": "^2.88.2",
25 + "xlsx": "^0.16.2"
24 } 26 }
25 } 27 }
......
1 var express = require('express'); 1 var express = require('express');
2 var router = express.Router(); 2 var router = express.Router();
3 +const XLSX = require('xlsx');
4 +var multer = require('multer');
5 +var fs = require('fs');
6 +// var pool = require('./../routes/modules/database');
7 +
8 +//파일 저장위치와 파일이름 설정
9 +var storage = multer.diskStorage({
10 + destination: function (req, file, cb) {
11 + cb(null, 'public/upload');
12 + },
13 + //파일이름 설정
14 + filename: function (req, file, cb) {
15 + cb(null, file.originalname);
16 + }
17 +})
18 +
19 +//파일 업로드 모듈
20 +var upload = multer({ storage: storage })
3 21
4 // 연락처 백업, 삭제, 검색 22 // 연락처 백업, 삭제, 검색
5 /* 23 /*
...@@ -7,8 +25,62 @@ contact_upload : 연락처 파일 업로드 모듈 ...@@ -7,8 +25,62 @@ contact_upload : 연락처 파일 업로드 모듈
7 input : 사용자가 연락처를 저장해놓은 csv 혹은 xlsx 파일 25 input : 사용자가 연락처를 저장해놓은 csv 혹은 xlsx 파일
8 output : 연락처 저장 성공 여부 26 output : 연락처 저장 성공 여부
9 */ 27 */
10 -router.get('/contact_upload', function(req, res, next) { 28 +router.post('/contact_upload', upload.single('file'), function(req, res, next) {
11 - console.log("login"); 29 + // console.log(req);
30 + var user_id = req.query.id;
31 + var file = req.file;
32 + var workbook = XLSX.readFile('public/upload/contact.xlsx');
33 + var firstWSheetName = workbook.SheetNames[0];
34 + var firstWSheet = workbook.Sheets[firstWSheetName];
35 + var name = [];
36 + var phone = [];
37 + var email = [];
38 + var added_date = [];
39 + var length = firstWSheet['!ref'][4];
40 + var temp ="";
41 +
42 + var sqlquery = "insert into contact(user_id,name,email,phone,added_date) values";
43 + for(var i=1;i<length;i++)
44 + {
45 + for(var j=0;j<4;j++)
46 + {
47 + if(j==0){
48 + temp = "A" + (i+1);
49 + name.push(firstWSheet[temp].v);
50 + sqlquery += ' ("' + user_id + '","'+name[i-1];
51 + }
52 + else if(j==1){
53 + temp = "B" + (i+1);
54 + phone.push(firstWSheet[temp].v);
55 + sqlquery += '","' + phone[i-1];
56 + }
57 + else if(j==2){
58 + temp = "C" + (i+1);
59 + email.push(firstWSheet[temp].v);
60 + sqlquery += '","' + email[i-1];
61 + }
62 + else if(j==3){
63 + temp = "D" + (i+1);
64 + added_date.push(firstWSheet[temp].v);
65 + sqlquery += '","' + added_date[i-1] + '"),';
66 + }
67 + }
68 + }
69 + sqlquery = sqlquery.substring(0,sqlquery.length-1);
70 + connection.query(sqlquery, function (err, rows) {
71 + if (err) {
72 + console.log("upload contact failed");
73 + throw err;
74 + } else {
75 + console.log(rows);
76 + var filename = 'public/upload/contact.xlsx';
77 + fs.unlink(filename, function (err) {
78 + if (err) throw err;
79 + console.log('file deleted');
80 + })
81 + res.status(200).send('upload');
82 + }
83 + });
12 }); 84 });
13 85
14 /* 86 /*
......