├── .gitignore
├── LICENSE
├── README.md
└── expressjs
├── index.js
├── package-lock.json
└── package.json
/.gitignore:
--------------------------------------------------------------------------------
1 | # Logs
2 | logs
3 | *.log
4 | npm-debug.log*
5 | yarn-debug.log*
6 | yarn-error.log*
7 | lerna-debug.log*
8 |
9 | # Diagnostic reports (https://nodejs.org/api/report.html)
10 | report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json
11 |
12 | # Runtime data
13 | pids
14 | *.pid
15 | *.seed
16 | *.pid.lock
17 |
18 | # Directory for instrumented libs generated by jscoverage/JSCover
19 | lib-cov
20 |
21 | # Coverage directory used by tools like istanbul
22 | coverage
23 | *.lcov
24 |
25 | # nyc test coverage
26 | .nyc_output
27 |
28 | # Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files)
29 | .grunt
30 |
31 | # Bower dependency directory (https://bower.io/)
32 | bower_components
33 |
34 | # node-waf configuration
35 | .lock-wscript
36 |
37 | # Compiled binary addons (https://nodejs.org/api/addons.html)
38 | build/Release
39 |
40 | # Dependency directories
41 | node_modules/
42 | jspm_packages/
43 |
44 | expressjs/node_modules/
45 | java/node_modules/
46 | expressjs/uploads/
47 | java/uploads/
48 | # TypeScript v1 declaration files
49 | typings/
50 |
51 | # TypeScript cache
52 | *.tsbuildinfo
53 |
54 | # Optional npm cache directory
55 | .npm
56 |
57 | # Optional eslint cache
58 | .eslintcache
59 |
60 | # Microbundle cache
61 | .rpt2_cache/
62 | .rts2_cache_cjs/
63 | .rts2_cache_es/
64 | .rts2_cache_umd/
65 |
66 | # Optional REPL history
67 | .node_repl_history
68 |
69 | # Output of 'npm pack'
70 | *.tgz
71 |
72 | # Yarn Integrity file
73 | .yarn-integrity
74 |
75 | # dotenv environment variables file
76 | .env
77 | .env.test
78 |
79 | # parcel-bundler cache (https://parceljs.org/)
80 | .cache
81 |
82 | # Next.js build output
83 | .next
84 |
85 | # Nuxt.js build / generate output
86 | .nuxt
87 | dist
88 |
89 | # Gatsby files
90 | .cache/
91 | # Comment in the public line in if your project uses Gatsby and *not* Next.js
92 | # https://nextjs.org/blog/next-9-1#public-directory-support
93 | # public
94 |
95 | # vuepress build output
96 | .vuepress/dist
97 |
98 | # Serverless directories
99 | .serverless/
100 |
101 | # FuseBox cache
102 | .fusebox/
103 |
104 | # DynamoDB Local files
105 | .dynamodb/
106 |
107 | # TernJS port file
108 | .tern-port
109 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2021 dropzone-ui
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
Dropzone-UI (file-upload-server-side)
5 | Server side implementations for uploading files.
6 |
7 |
8 |
9 | # Express
10 | Server side implementation for uploading files built with Express.js.
11 |
12 |
13 | ## Run server
14 | Follow the instructions to run the server.
15 |
16 | ```sh
17 | #clone this repository
18 | git clone https://github.com/dropzone-ui/file-upload-server-side.git
19 |
20 | #move to project folder
21 | cd ./expressjs
22 |
23 | #install dependencies
24 | npm install
25 |
26 | #run server on development mode
27 | npm run dev
28 | ```
29 |
30 | Congrats! you are done!. Your server is now running on port 2800.
31 | So, the url endpoint that must be given to `Dropzone` component is `http://localhost:2800/upload-my-file`.
32 |
33 | If you deploy your server, the url prop will change to `http:///upload-my-file`.
34 |
35 | # Frontend side
36 | Now upload some files from a react app using [dropzone-ui](https://www.npmjs.com/package/@dropzone-ui/react) this way:
37 |
38 | ```jsx
39 | import React,{ useState} from "react";
40 | import { Dropzone, FullScreenPreview, FileItem } from "@dropzone-ui/react";
41 |
42 | const SERVER_URL = "http://localhost:2800";
43 |
44 | const Example = props =>{
45 | const [files, setFiles] = useState([]);
46 | const updateFiles = (incommingFiles) => {
47 | console.log("incomming files", incommingFiles);
48 | setFiles(incommingFiles);
49 | };
50 | const handleUpload=(responses)=>{
51 | //check the responses here
52 | console.log("responses", responses);
53 | }
54 | const onDelete = (id) => {
55 | setFiles(files.filter((x) => x.id !== id));
56 | };
57 |
58 | return (
59 |
65 | {files.map((file) => (
66 |
71 | ))}
72 |
73 | );
74 | }
75 | export default Example;
76 | ```
77 |
78 | For more examples of [dropzone-ui](https://www.npmjs.com/package/@dropzone-ui/react), check [here](https://www.npmjs.com/package/@dropzone-ui/react#Usage-and-examples).
79 |
80 | ## License
81 |
82 | This project is licensed under the terms of the
83 | [MIT license](/LICENSE).
84 |
--------------------------------------------------------------------------------
/expressjs/index.js:
--------------------------------------------------------------------------------
1 | const express = require("express");
2 | const fileUpload = require("express-fileupload");
3 | const cors = require("cors");
4 | const bodyParser = require("body-parser");
5 | const morgan = require("morgan");
6 | const _ = require("lodash");
7 |
8 | const app = express();
9 |
10 | // enable files upload
11 | app.use(fileUpload({ createParentPath: true }));
12 | //add other middleware
13 | app.use(cors());
14 | app.use(bodyParser.json());
15 | app.use(bodyParser.urlencoded({ extended: true }));
16 | app.use(morgan("dev"));
17 |
18 | //start app
19 | const port = process.env.PORT || 2800;
20 |
21 | app.listen(port, () => console.log(`App is listening on port ${port}.`));
22 | app.post("/upload-my-file", async (req, res) => {
23 | try {
24 | if (!req.files) {
25 | res.send({
26 | status: false,
27 | message: "No file uploaded",
28 | payload: {},
29 | });
30 | } else {
31 | //Use the name of the input field (i.e. "file") to retrieve the uploaded file
32 | let file = req.files.file;
33 | //Use the mv() method to place the file in upload directory (i.e. "uploads")
34 | file.mv("./uploads/" + file.name);
35 | //send response
36 | res.send({
37 | status: true,
38 | message: "File was uploaded successfully",
39 | payload: {
40 | name: file.name,
41 | mimetype: file.mimetype,
42 | size: file.size,
43 | path: "/files/uploads/",
44 | url: "https://my-ftp-server.com/bjYJGFYgjfVGHVb",
45 | },
46 | });
47 | }
48 | } catch (err) {
49 | res.status(500).send({
50 | status: false,
51 | message: "Unspected problem",
52 | payload: {},
53 | });
54 | }
55 | });
56 |
--------------------------------------------------------------------------------
/expressjs/package-lock.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "expressjs",
3 | "version": "1.0.0",
4 | "lockfileVersion": 1,
5 | "requires": true,
6 | "dependencies": {
7 | "accepts": {
8 | "version": "1.3.7",
9 | "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz",
10 | "integrity": "sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==",
11 | "requires": {
12 | "mime-types": "~2.1.24",
13 | "negotiator": "0.6.2"
14 | }
15 | },
16 | "array-flatten": {
17 | "version": "1.1.1",
18 | "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz",
19 | "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI="
20 | },
21 | "basic-auth": {
22 | "version": "2.0.1",
23 | "resolved": "https://registry.npmjs.org/basic-auth/-/basic-auth-2.0.1.tgz",
24 | "integrity": "sha512-NF+epuEdnUYVlGuhaxbbq+dvJttwLnGY+YixlXlME5KpQ5W3CnXA5cVTneY3SPbPDRkcjMbifrwmFYcClgOZeg==",
25 | "requires": {
26 | "safe-buffer": "5.1.2"
27 | }
28 | },
29 | "body-parser": {
30 | "version": "1.19.0",
31 | "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.0.tgz",
32 | "integrity": "sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw==",
33 | "requires": {
34 | "bytes": "3.1.0",
35 | "content-type": "~1.0.4",
36 | "debug": "2.6.9",
37 | "depd": "~1.1.2",
38 | "http-errors": "1.7.2",
39 | "iconv-lite": "0.4.24",
40 | "on-finished": "~2.3.0",
41 | "qs": "6.7.0",
42 | "raw-body": "2.4.0",
43 | "type-is": "~1.6.17"
44 | }
45 | },
46 | "busboy": {
47 | "version": "0.3.1",
48 | "resolved": "https://registry.npmjs.org/busboy/-/busboy-0.3.1.tgz",
49 | "integrity": "sha512-y7tTxhGKXcyBxRKAni+awqx8uqaJKrSFSNFSeRG5CsWNdmy2BIK+6VGWEW7TZnIO/533mtMEA4rOevQV815YJw==",
50 | "requires": {
51 | "dicer": "0.3.0"
52 | }
53 | },
54 | "bytes": {
55 | "version": "3.1.0",
56 | "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz",
57 | "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg=="
58 | },
59 | "content-disposition": {
60 | "version": "0.5.3",
61 | "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.3.tgz",
62 | "integrity": "sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g==",
63 | "requires": {
64 | "safe-buffer": "5.1.2"
65 | }
66 | },
67 | "content-type": {
68 | "version": "1.0.4",
69 | "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz",
70 | "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA=="
71 | },
72 | "cookie": {
73 | "version": "0.4.0",
74 | "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.0.tgz",
75 | "integrity": "sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg=="
76 | },
77 | "cookie-signature": {
78 | "version": "1.0.6",
79 | "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz",
80 | "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw="
81 | },
82 | "cors": {
83 | "version": "2.8.5",
84 | "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz",
85 | "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==",
86 | "requires": {
87 | "object-assign": "^4",
88 | "vary": "^1"
89 | }
90 | },
91 | "debug": {
92 | "version": "2.6.9",
93 | "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
94 | "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
95 | "requires": {
96 | "ms": "2.0.0"
97 | }
98 | },
99 | "depd": {
100 | "version": "1.1.2",
101 | "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz",
102 | "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak="
103 | },
104 | "destroy": {
105 | "version": "1.0.4",
106 | "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz",
107 | "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA="
108 | },
109 | "dicer": {
110 | "version": "0.3.0",
111 | "resolved": "https://registry.npmjs.org/dicer/-/dicer-0.3.0.tgz",
112 | "integrity": "sha512-MdceRRWqltEG2dZqO769g27N/3PXfcKl04VhYnBlo2YhH7zPi88VebsjTKclaOyiuMaGU72hTfw3VkUitGcVCA==",
113 | "requires": {
114 | "streamsearch": "0.1.2"
115 | }
116 | },
117 | "ee-first": {
118 | "version": "1.1.1",
119 | "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz",
120 | "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0="
121 | },
122 | "encodeurl": {
123 | "version": "1.0.2",
124 | "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz",
125 | "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k="
126 | },
127 | "escape-html": {
128 | "version": "1.0.3",
129 | "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz",
130 | "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg="
131 | },
132 | "etag": {
133 | "version": "1.8.1",
134 | "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz",
135 | "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc="
136 | },
137 | "express": {
138 | "version": "4.17.1",
139 | "resolved": "https://registry.npmjs.org/express/-/express-4.17.1.tgz",
140 | "integrity": "sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g==",
141 | "requires": {
142 | "accepts": "~1.3.7",
143 | "array-flatten": "1.1.1",
144 | "body-parser": "1.19.0",
145 | "content-disposition": "0.5.3",
146 | "content-type": "~1.0.4",
147 | "cookie": "0.4.0",
148 | "cookie-signature": "1.0.6",
149 | "debug": "2.6.9",
150 | "depd": "~1.1.2",
151 | "encodeurl": "~1.0.2",
152 | "escape-html": "~1.0.3",
153 | "etag": "~1.8.1",
154 | "finalhandler": "~1.1.2",
155 | "fresh": "0.5.2",
156 | "merge-descriptors": "1.0.1",
157 | "methods": "~1.1.2",
158 | "on-finished": "~2.3.0",
159 | "parseurl": "~1.3.3",
160 | "path-to-regexp": "0.1.7",
161 | "proxy-addr": "~2.0.5",
162 | "qs": "6.7.0",
163 | "range-parser": "~1.2.1",
164 | "safe-buffer": "5.1.2",
165 | "send": "0.17.1",
166 | "serve-static": "1.14.1",
167 | "setprototypeof": "1.1.1",
168 | "statuses": "~1.5.0",
169 | "type-is": "~1.6.18",
170 | "utils-merge": "1.0.1",
171 | "vary": "~1.1.2"
172 | }
173 | },
174 | "express-fileupload": {
175 | "version": "1.2.1",
176 | "resolved": "https://registry.npmjs.org/express-fileupload/-/express-fileupload-1.2.1.tgz",
177 | "integrity": "sha512-fWPNAkBj+Azt9Itmcz/Reqdg3LeBfaXptDEev2JM8bCC0yDptglCnlizhf0YZauyU5X/g6v7v4Xxqhg8tmEfEA==",
178 | "requires": {
179 | "busboy": "^0.3.1"
180 | }
181 | },
182 | "finalhandler": {
183 | "version": "1.1.2",
184 | "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz",
185 | "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==",
186 | "requires": {
187 | "debug": "2.6.9",
188 | "encodeurl": "~1.0.2",
189 | "escape-html": "~1.0.3",
190 | "on-finished": "~2.3.0",
191 | "parseurl": "~1.3.3",
192 | "statuses": "~1.5.0",
193 | "unpipe": "~1.0.0"
194 | }
195 | },
196 | "forwarded": {
197 | "version": "0.2.0",
198 | "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz",
199 | "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow=="
200 | },
201 | "fresh": {
202 | "version": "0.5.2",
203 | "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz",
204 | "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac="
205 | },
206 | "http-errors": {
207 | "version": "1.7.2",
208 | "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.2.tgz",
209 | "integrity": "sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg==",
210 | "requires": {
211 | "depd": "~1.1.2",
212 | "inherits": "2.0.3",
213 | "setprototypeof": "1.1.1",
214 | "statuses": ">= 1.5.0 < 2",
215 | "toidentifier": "1.0.0"
216 | }
217 | },
218 | "iconv-lite": {
219 | "version": "0.4.24",
220 | "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz",
221 | "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==",
222 | "requires": {
223 | "safer-buffer": ">= 2.1.2 < 3"
224 | }
225 | },
226 | "inherits": {
227 | "version": "2.0.3",
228 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
229 | "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4="
230 | },
231 | "ipaddr.js": {
232 | "version": "1.9.1",
233 | "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz",
234 | "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g=="
235 | },
236 | "lodash": {
237 | "version": "4.17.21",
238 | "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz",
239 | "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg=="
240 | },
241 | "media-typer": {
242 | "version": "0.3.0",
243 | "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz",
244 | "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g="
245 | },
246 | "merge-descriptors": {
247 | "version": "1.0.1",
248 | "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz",
249 | "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E="
250 | },
251 | "methods": {
252 | "version": "1.1.2",
253 | "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz",
254 | "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4="
255 | },
256 | "mime": {
257 | "version": "1.6.0",
258 | "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz",
259 | "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg=="
260 | },
261 | "mime-db": {
262 | "version": "1.49.0",
263 | "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.49.0.tgz",
264 | "integrity": "sha512-CIc8j9URtOVApSFCQIF+VBkX1RwXp/oMMOrqdyXSBXq5RWNEsRfyj1kiRnQgmNXmHxPoFIxOroKA3zcU9P+nAA=="
265 | },
266 | "mime-types": {
267 | "version": "2.1.32",
268 | "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.32.tgz",
269 | "integrity": "sha512-hJGaVS4G4c9TSMYh2n6SQAGrC4RnfU+daP8G7cSCmaqNjiOoUY0VHCMS42pxnQmVF1GWwFhbHWn3RIxCqTmZ9A==",
270 | "requires": {
271 | "mime-db": "1.49.0"
272 | }
273 | },
274 | "morgan": {
275 | "version": "1.10.0",
276 | "resolved": "https://registry.npmjs.org/morgan/-/morgan-1.10.0.tgz",
277 | "integrity": "sha512-AbegBVI4sh6El+1gNwvD5YIck7nSA36weD7xvIxG4in80j/UoK8AEGaWnnz8v1GxonMCltmlNs5ZKbGvl9b1XQ==",
278 | "requires": {
279 | "basic-auth": "~2.0.1",
280 | "debug": "2.6.9",
281 | "depd": "~2.0.0",
282 | "on-finished": "~2.3.0",
283 | "on-headers": "~1.0.2"
284 | },
285 | "dependencies": {
286 | "depd": {
287 | "version": "2.0.0",
288 | "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz",
289 | "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw=="
290 | }
291 | }
292 | },
293 | "ms": {
294 | "version": "2.0.0",
295 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
296 | "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g="
297 | },
298 | "negotiator": {
299 | "version": "0.6.2",
300 | "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz",
301 | "integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw=="
302 | },
303 | "object-assign": {
304 | "version": "4.1.1",
305 | "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
306 | "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM="
307 | },
308 | "on-finished": {
309 | "version": "2.3.0",
310 | "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz",
311 | "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=",
312 | "requires": {
313 | "ee-first": "1.1.1"
314 | }
315 | },
316 | "on-headers": {
317 | "version": "1.0.2",
318 | "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz",
319 | "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA=="
320 | },
321 | "parseurl": {
322 | "version": "1.3.3",
323 | "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz",
324 | "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ=="
325 | },
326 | "path-to-regexp": {
327 | "version": "0.1.7",
328 | "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz",
329 | "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w="
330 | },
331 | "proxy-addr": {
332 | "version": "2.0.7",
333 | "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz",
334 | "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==",
335 | "requires": {
336 | "forwarded": "0.2.0",
337 | "ipaddr.js": "1.9.1"
338 | }
339 | },
340 | "qs": {
341 | "version": "6.7.0",
342 | "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz",
343 | "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ=="
344 | },
345 | "range-parser": {
346 | "version": "1.2.1",
347 | "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz",
348 | "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg=="
349 | },
350 | "raw-body": {
351 | "version": "2.4.0",
352 | "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.0.tgz",
353 | "integrity": "sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q==",
354 | "requires": {
355 | "bytes": "3.1.0",
356 | "http-errors": "1.7.2",
357 | "iconv-lite": "0.4.24",
358 | "unpipe": "1.0.0"
359 | }
360 | },
361 | "safe-buffer": {
362 | "version": "5.1.2",
363 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
364 | "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
365 | },
366 | "safer-buffer": {
367 | "version": "2.1.2",
368 | "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
369 | "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="
370 | },
371 | "send": {
372 | "version": "0.17.1",
373 | "resolved": "https://registry.npmjs.org/send/-/send-0.17.1.tgz",
374 | "integrity": "sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg==",
375 | "requires": {
376 | "debug": "2.6.9",
377 | "depd": "~1.1.2",
378 | "destroy": "~1.0.4",
379 | "encodeurl": "~1.0.2",
380 | "escape-html": "~1.0.3",
381 | "etag": "~1.8.1",
382 | "fresh": "0.5.2",
383 | "http-errors": "~1.7.2",
384 | "mime": "1.6.0",
385 | "ms": "2.1.1",
386 | "on-finished": "~2.3.0",
387 | "range-parser": "~1.2.1",
388 | "statuses": "~1.5.0"
389 | },
390 | "dependencies": {
391 | "ms": {
392 | "version": "2.1.1",
393 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz",
394 | "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg=="
395 | }
396 | }
397 | },
398 | "serve-static": {
399 | "version": "1.14.1",
400 | "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.1.tgz",
401 | "integrity": "sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg==",
402 | "requires": {
403 | "encodeurl": "~1.0.2",
404 | "escape-html": "~1.0.3",
405 | "parseurl": "~1.3.3",
406 | "send": "0.17.1"
407 | }
408 | },
409 | "setprototypeof": {
410 | "version": "1.1.1",
411 | "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz",
412 | "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw=="
413 | },
414 | "statuses": {
415 | "version": "1.5.0",
416 | "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz",
417 | "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow="
418 | },
419 | "streamsearch": {
420 | "version": "0.1.2",
421 | "resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-0.1.2.tgz",
422 | "integrity": "sha1-gIudDlb8Jz2Am6VzOOkpkZoanxo="
423 | },
424 | "toidentifier": {
425 | "version": "1.0.0",
426 | "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz",
427 | "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw=="
428 | },
429 | "type-is": {
430 | "version": "1.6.18",
431 | "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz",
432 | "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==",
433 | "requires": {
434 | "media-typer": "0.3.0",
435 | "mime-types": "~2.1.24"
436 | }
437 | },
438 | "unpipe": {
439 | "version": "1.0.0",
440 | "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz",
441 | "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw="
442 | },
443 | "utils-merge": {
444 | "version": "1.0.1",
445 | "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz",
446 | "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM="
447 | },
448 | "vary": {
449 | "version": "1.1.2",
450 | "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz",
451 | "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw="
452 | }
453 | }
454 | }
455 |
--------------------------------------------------------------------------------
/expressjs/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "expressjs",
3 | "version": "2.0.0",
4 | "description": "",
5 | "main": "index.js",
6 | "scripts": {
7 | "test": "echo \"Error: no test specified\" && exit 1",
8 | "dev": "node index.js"
9 | },
10 | "keywords": [],
11 | "author": "",
12 | "license": "ISC",
13 | "dependencies": {
14 | "body-parser": "^1.19.0",
15 | "cors": "^2.8.5",
16 | "express": "^4.17.1",
17 | "express-fileupload": "^1.2.1",
18 | "lodash": "^4.17.21",
19 | "morgan": "^1.10.0"
20 | }
21 | }
22 |
--------------------------------------------------------------------------------