├── .gitignore ├── README.md ├── package-lock.json ├── package.json ├── public ├── IMAGE-1587347234394.jpg ├── IMAGE-1587347236307.jpg ├── IMAGE-1587347324012.jpg ├── IMAGE-1587347364574.jpg ├── favicon.ico ├── index.html ├── logo192.png ├── logo512.png ├── manifest.json └── robots.txt ├── server ├── .gitignore ├── app.js ├── model.js ├── package-lock.json ├── package.json └── public │ └── IMAGE-1587353692843.jpg ├── src ├── App.css ├── App.js ├── App.test.js ├── index.css ├── index.js ├── serviceWorker.js └── setupTests.js └── yarn.lock /.gitignore: -------------------------------------------------------------------------------- 1 | # See https://help.github.com/articles/ignoring-files/ for more about ignoring files. 2 | 3 | # dependencies 4 | /node_modules 5 | /.pnp 6 | .pnp.js 7 | 8 | # testing 9 | /coverage 10 | 11 | # production 12 | /build 13 | 14 | # misc 15 | .DS_Store 16 | .env.local 17 | .env.development.local 18 | .env.test.local 19 | .env.production.local 20 | 21 | npm-debug.log* 22 | yarn-debug.log* 23 | yarn-error.log* 24 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # file upload mern Stack 2 | 3 | ## Getting started 4 | To get the client side running locally: 5 | 6 | ``` 7 | git clone https://github.com/IbrahimShamma99/file-upload 8 | cd file-upload/ 9 | npm i 10 | npm start 11 | ``` 12 | 13 | To get the server side running: 14 | ``` 15 | sudo service mongod restart 16 | cd ./server 17 | npm i 18 | npm run dev 19 | ``` -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "file-upload", 3 | "version": "0.1.0", 4 | "private": true, 5 | "dependencies": { 6 | "@testing-library/jest-dom": "^4.2.4", 7 | "@testing-library/react": "^9.3.2", 8 | "@testing-library/user-event": "^7.1.2", 9 | "axios": "^0.21.1", 10 | "react": "^16.13.1", 11 | "react-dom": "^16.13.1", 12 | "react-scripts": "3.4.1" 13 | }, 14 | "scripts": { 15 | "start": "react-scripts start", 16 | "build": "react-scripts build", 17 | "test": "react-scripts test", 18 | "eject": "react-scripts eject" 19 | }, 20 | "eslintConfig": { 21 | "extends": "react-app" 22 | }, 23 | "browserslist": { 24 | "production": [ 25 | ">0.2%", 26 | "not dead", 27 | "not op_mini all" 28 | ], 29 | "development": [ 30 | "last 1 chrome version", 31 | "last 1 firefox version", 32 | "last 1 safari version" 33 | ] 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /public/IMAGE-1587347234394.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IbrahimShamma99/file-upload/e504ec05aeab5fe3e36d418ef4a36d754b72d9ad/public/IMAGE-1587347234394.jpg -------------------------------------------------------------------------------- /public/IMAGE-1587347236307.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IbrahimShamma99/file-upload/e504ec05aeab5fe3e36d418ef4a36d754b72d9ad/public/IMAGE-1587347236307.jpg -------------------------------------------------------------------------------- /public/IMAGE-1587347324012.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IbrahimShamma99/file-upload/e504ec05aeab5fe3e36d418ef4a36d754b72d9ad/public/IMAGE-1587347324012.jpg -------------------------------------------------------------------------------- /public/IMAGE-1587347364574.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IbrahimShamma99/file-upload/e504ec05aeab5fe3e36d418ef4a36d754b72d9ad/public/IMAGE-1587347364574.jpg -------------------------------------------------------------------------------- /public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IbrahimShamma99/file-upload/e504ec05aeab5fe3e36d418ef4a36d754b72d9ad/public/favicon.ico -------------------------------------------------------------------------------- /public/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 |
4 | 5 | 6 | 7 | 8 | 12 | 13 | 17 | 18 | 27 |hello!
"); 43 | }); 44 | 45 | mongoose.connect("mongodb://localhost/file-upload",{ 46 | useUnifiedTopology: true, 47 | useNewUrlParser: true, 48 | useCreateIndex: true, 49 | }).then(()=>{console.log("DB is connected")}) 50 | 51 | app.listen(PORT,()=>{ 52 | console.log("\u{1F525}\u{1F680} app listen on port",PORT,"\u{1F525}\u{1F680}") 53 | }); -------------------------------------------------------------------------------- /server/model.js: -------------------------------------------------------------------------------- 1 | var mongoose = require('mongoose'); 2 | 3 | 4 | const fileSchema = new mongoose.Schema({ 5 | meta_data:{} 6 | }); 7 | 8 | mongoose.model("file",fileSchema); -------------------------------------------------------------------------------- /server/package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "server", 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 | "append-field": { 17 | "version": "1.0.0", 18 | "resolved": "https://registry.npmjs.org/append-field/-/append-field-1.0.0.tgz", 19 | "integrity": "sha1-HjRA6RXwsSA9I3SOeO3XubW0PlY=" 20 | }, 21 | "array-flatten": { 22 | "version": "1.1.1", 23 | "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", 24 | "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=" 25 | }, 26 | "bl": { 27 | "version": "2.2.1", 28 | "resolved": "https://registry.npmjs.org/bl/-/bl-2.2.1.tgz", 29 | "integrity": "sha512-6Pesp1w0DEX1N550i/uGV/TqucVL4AM/pgThFSN/Qq9si1/DF9aIHs1BxD8V/QU0HoeHO6cQRTAuYnLPKq1e4g==", 30 | "requires": { 31 | "readable-stream": "^2.3.5", 32 | "safe-buffer": "^5.1.1" 33 | }, 34 | "dependencies": { 35 | "isarray": { 36 | "version": "1.0.0", 37 | "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", 38 | "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" 39 | }, 40 | "readable-stream": { 41 | "version": "2.3.7", 42 | "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", 43 | "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", 44 | "requires": { 45 | "core-util-is": "~1.0.0", 46 | "inherits": "~2.0.3", 47 | "isarray": "~1.0.0", 48 | "process-nextick-args": "~2.0.0", 49 | "safe-buffer": "~5.1.1", 50 | "string_decoder": "~1.1.1", 51 | "util-deprecate": "~1.0.1" 52 | } 53 | }, 54 | "string_decoder": { 55 | "version": "1.1.1", 56 | "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", 57 | "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", 58 | "requires": { 59 | "safe-buffer": "~5.1.0" 60 | } 61 | } 62 | } 63 | }, 64 | "bluebird": { 65 | "version": "3.5.1", 66 | "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.1.tgz", 67 | "integrity": "sha512-MKiLiV+I1AA596t9w1sQJ8jkiSr5+ZKi0WKrYGUn6d1Fx+Ij4tIj+m2WMQSGczs5jZVxV339chE8iwk6F64wjA==" 68 | }, 69 | "body-parser": { 70 | "version": "1.19.0", 71 | "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.0.tgz", 72 | "integrity": "sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw==", 73 | "requires": { 74 | "bytes": "3.1.0", 75 | "content-type": "~1.0.4", 76 | "debug": "2.6.9", 77 | "depd": "~1.1.2", 78 | "http-errors": "1.7.2", 79 | "iconv-lite": "0.4.24", 80 | "on-finished": "~2.3.0", 81 | "qs": "6.7.0", 82 | "raw-body": "2.4.0", 83 | "type-is": "~1.6.17" 84 | } 85 | }, 86 | "bson": { 87 | "version": "1.1.4", 88 | "resolved": "https://registry.npmjs.org/bson/-/bson-1.1.4.tgz", 89 | "integrity": "sha512-S/yKGU1syOMzO86+dGpg2qGoDL0zvzcb262G+gqEy6TgP6rt6z6qxSFX/8X6vLC91P7G7C3nLs0+bvDzmvBA3Q==" 90 | }, 91 | "buffer-from": { 92 | "version": "1.1.1", 93 | "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", 94 | "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==" 95 | }, 96 | "busboy": { 97 | "version": "0.2.14", 98 | "resolved": "https://registry.npmjs.org/busboy/-/busboy-0.2.14.tgz", 99 | "integrity": "sha1-bCpiLvz0fFe7vh4qnDetNseSVFM=", 100 | "requires": { 101 | "dicer": "0.2.5", 102 | "readable-stream": "1.1.x" 103 | } 104 | }, 105 | "bytes": { 106 | "version": "3.1.0", 107 | "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz", 108 | "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==" 109 | }, 110 | "concat-stream": { 111 | "version": "1.6.2", 112 | "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", 113 | "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", 114 | "requires": { 115 | "buffer-from": "^1.0.0", 116 | "inherits": "^2.0.3", 117 | "readable-stream": "^2.2.2", 118 | "typedarray": "^0.0.6" 119 | }, 120 | "dependencies": { 121 | "isarray": { 122 | "version": "1.0.0", 123 | "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", 124 | "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" 125 | }, 126 | "readable-stream": { 127 | "version": "2.3.7", 128 | "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", 129 | "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", 130 | "requires": { 131 | "core-util-is": "~1.0.0", 132 | "inherits": "~2.0.3", 133 | "isarray": "~1.0.0", 134 | "process-nextick-args": "~2.0.0", 135 | "safe-buffer": "~5.1.1", 136 | "string_decoder": "~1.1.1", 137 | "util-deprecate": "~1.0.1" 138 | } 139 | }, 140 | "string_decoder": { 141 | "version": "1.1.1", 142 | "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", 143 | "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", 144 | "requires": { 145 | "safe-buffer": "~5.1.0" 146 | } 147 | } 148 | } 149 | }, 150 | "content-disposition": { 151 | "version": "0.5.3", 152 | "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.3.tgz", 153 | "integrity": "sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g==", 154 | "requires": { 155 | "safe-buffer": "5.1.2" 156 | } 157 | }, 158 | "content-type": { 159 | "version": "1.0.4", 160 | "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", 161 | "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==" 162 | }, 163 | "cookie": { 164 | "version": "0.4.0", 165 | "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.0.tgz", 166 | "integrity": "sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg==" 167 | }, 168 | "cookie-signature": { 169 | "version": "1.0.6", 170 | "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", 171 | "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=" 172 | }, 173 | "core-util-is": { 174 | "version": "1.0.2", 175 | "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", 176 | "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" 177 | }, 178 | "debug": { 179 | "version": "2.6.9", 180 | "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", 181 | "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", 182 | "requires": { 183 | "ms": "2.0.0" 184 | } 185 | }, 186 | "denque": { 187 | "version": "1.4.1", 188 | "resolved": "https://registry.npmjs.org/denque/-/denque-1.4.1.tgz", 189 | "integrity": "sha512-OfzPuSZKGcgr96rf1oODnfjqBFmr1DVoc/TrItj3Ohe0Ah1C5WX5Baquw/9U9KovnQ88EqmJbD66rKYUQYN1tQ==" 190 | }, 191 | "depd": { 192 | "version": "1.1.2", 193 | "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", 194 | "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=" 195 | }, 196 | "destroy": { 197 | "version": "1.0.4", 198 | "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", 199 | "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=" 200 | }, 201 | "dicer": { 202 | "version": "0.2.5", 203 | "resolved": "https://registry.npmjs.org/dicer/-/dicer-0.2.5.tgz", 204 | "integrity": "sha1-WZbAhrszIYyBLAkL3cCc0S+stw8=", 205 | "requires": { 206 | "readable-stream": "1.1.x", 207 | "streamsearch": "0.1.2" 208 | } 209 | }, 210 | "ee-first": { 211 | "version": "1.1.1", 212 | "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", 213 | "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=" 214 | }, 215 | "encodeurl": { 216 | "version": "1.0.2", 217 | "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", 218 | "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=" 219 | }, 220 | "escape-html": { 221 | "version": "1.0.3", 222 | "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", 223 | "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=" 224 | }, 225 | "etag": { 226 | "version": "1.8.1", 227 | "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", 228 | "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=" 229 | }, 230 | "express": { 231 | "version": "4.17.1", 232 | "resolved": "https://registry.npmjs.org/express/-/express-4.17.1.tgz", 233 | "integrity": "sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g==", 234 | "requires": { 235 | "accepts": "~1.3.7", 236 | "array-flatten": "1.1.1", 237 | "body-parser": "1.19.0", 238 | "content-disposition": "0.5.3", 239 | "content-type": "~1.0.4", 240 | "cookie": "0.4.0", 241 | "cookie-signature": "1.0.6", 242 | "debug": "2.6.9", 243 | "depd": "~1.1.2", 244 | "encodeurl": "~1.0.2", 245 | "escape-html": "~1.0.3", 246 | "etag": "~1.8.1", 247 | "finalhandler": "~1.1.2", 248 | "fresh": "0.5.2", 249 | "merge-descriptors": "1.0.1", 250 | "methods": "~1.1.2", 251 | "on-finished": "~2.3.0", 252 | "parseurl": "~1.3.3", 253 | "path-to-regexp": "0.1.7", 254 | "proxy-addr": "~2.0.5", 255 | "qs": "6.7.0", 256 | "range-parser": "~1.2.1", 257 | "safe-buffer": "5.1.2", 258 | "send": "0.17.1", 259 | "serve-static": "1.14.1", 260 | "setprototypeof": "1.1.1", 261 | "statuses": "~1.5.0", 262 | "type-is": "~1.6.18", 263 | "utils-merge": "1.0.1", 264 | "vary": "~1.1.2" 265 | } 266 | }, 267 | "finalhandler": { 268 | "version": "1.1.2", 269 | "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", 270 | "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", 271 | "requires": { 272 | "debug": "2.6.9", 273 | "encodeurl": "~1.0.2", 274 | "escape-html": "~1.0.3", 275 | "on-finished": "~2.3.0", 276 | "parseurl": "~1.3.3", 277 | "statuses": "~1.5.0", 278 | "unpipe": "~1.0.0" 279 | } 280 | }, 281 | "forwarded": { 282 | "version": "0.1.2", 283 | "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz", 284 | "integrity": "sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ=" 285 | }, 286 | "fresh": { 287 | "version": "0.5.2", 288 | "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", 289 | "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=" 290 | }, 291 | "http-errors": { 292 | "version": "1.7.2", 293 | "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.2.tgz", 294 | "integrity": "sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg==", 295 | "requires": { 296 | "depd": "~1.1.2", 297 | "inherits": "2.0.3", 298 | "setprototypeof": "1.1.1", 299 | "statuses": ">= 1.5.0 < 2", 300 | "toidentifier": "1.0.0" 301 | }, 302 | "dependencies": { 303 | "inherits": { 304 | "version": "2.0.3", 305 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", 306 | "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" 307 | } 308 | } 309 | }, 310 | "iconv-lite": { 311 | "version": "0.4.24", 312 | "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", 313 | "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", 314 | "requires": { 315 | "safer-buffer": ">= 2.1.2 < 3" 316 | } 317 | }, 318 | "inherits": { 319 | "version": "2.0.4", 320 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", 321 | "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" 322 | }, 323 | "ipaddr.js": { 324 | "version": "1.9.1", 325 | "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", 326 | "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==" 327 | }, 328 | "isarray": { 329 | "version": "0.0.1", 330 | "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", 331 | "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=" 332 | }, 333 | "kareem": { 334 | "version": "2.3.1", 335 | "resolved": "https://registry.npmjs.org/kareem/-/kareem-2.3.1.tgz", 336 | "integrity": "sha512-l3hLhffs9zqoDe8zjmb/mAN4B8VT3L56EUvKNqLFVs9YlFA+zx7ke1DO8STAdDyYNkeSo1nKmjuvQeI12So8Xw==" 337 | }, 338 | "media-typer": { 339 | "version": "0.3.0", 340 | "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", 341 | "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=" 342 | }, 343 | "memory-pager": { 344 | "version": "1.5.0", 345 | "resolved": "https://registry.npmjs.org/memory-pager/-/memory-pager-1.5.0.tgz", 346 | "integrity": "sha512-ZS4Bp4r/Zoeq6+NLJpP+0Zzm0pR8whtGPf1XExKLJBAczGMnSi3It14OiNCStjQjM6NU1okjQGSxgEZN8eBYKg==", 347 | "optional": true 348 | }, 349 | "merge-descriptors": { 350 | "version": "1.0.1", 351 | "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", 352 | "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=" 353 | }, 354 | "methods": { 355 | "version": "1.1.2", 356 | "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", 357 | "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=" 358 | }, 359 | "mime": { 360 | "version": "1.6.0", 361 | "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", 362 | "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==" 363 | }, 364 | "mime-db": { 365 | "version": "1.43.0", 366 | "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.43.0.tgz", 367 | "integrity": "sha512-+5dsGEEovYbT8UY9yD7eE4XTc4UwJ1jBYlgaQQF38ENsKR3wj/8q8RFZrF9WIZpB2V1ArTVFUva8sAul1NzRzQ==" 368 | }, 369 | "mime-types": { 370 | "version": "2.1.26", 371 | "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.26.tgz", 372 | "integrity": "sha512-01paPWYgLrkqAyrlDorC1uDwl2p3qZT7yl806vW7DvDoxwXi46jsjFbg+WdwotBIk6/MbEhO/dh5aZ5sNj/dWQ==", 373 | "requires": { 374 | "mime-db": "1.43.0" 375 | } 376 | }, 377 | "minimist": { 378 | "version": "1.2.5", 379 | "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", 380 | "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==" 381 | }, 382 | "mkdirp": { 383 | "version": "0.5.5", 384 | "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", 385 | "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", 386 | "requires": { 387 | "minimist": "^1.2.5" 388 | } 389 | }, 390 | "mongodb": { 391 | "version": "3.5.5", 392 | "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-3.5.5.tgz", 393 | "integrity": "sha512-GCjDxR3UOltDq00Zcpzql6dQo1sVry60OXJY3TDmFc2SWFY6c8Gn1Ardidc5jDirvJrx2GC3knGOImKphbSL3A==", 394 | "requires": { 395 | "bl": "^2.2.0", 396 | "bson": "^1.1.1", 397 | "denque": "^1.4.1", 398 | "require_optional": "^1.0.1", 399 | "safe-buffer": "^5.1.2", 400 | "saslprep": "^1.0.0" 401 | } 402 | }, 403 | "mongoose": { 404 | "version": "5.9.9", 405 | "resolved": "https://registry.npmjs.org/mongoose/-/mongoose-5.9.9.tgz", 406 | "integrity": "sha512-pLkIkM7XQwfbQ+xK1l57Zv0DYPH190/I6Cv5+PbJGfAU0HvX0atMlp+vly8zcjNTEvTkVM80qA5eBYBvZyLYXw==", 407 | "requires": { 408 | "bson": "~1.1.1", 409 | "kareem": "2.3.1", 410 | "mongodb": "3.5.5", 411 | "mongoose-legacy-pluralize": "1.0.2", 412 | "mpath": "0.7.0", 413 | "mquery": "3.2.2", 414 | "ms": "2.1.2", 415 | "regexp-clone": "1.0.0", 416 | "safe-buffer": "5.1.2", 417 | "sift": "7.0.1", 418 | "sliced": "1.0.1" 419 | }, 420 | "dependencies": { 421 | "ms": { 422 | "version": "2.1.2", 423 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", 424 | "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" 425 | } 426 | } 427 | }, 428 | "mongoose-legacy-pluralize": { 429 | "version": "1.0.2", 430 | "resolved": "https://registry.npmjs.org/mongoose-legacy-pluralize/-/mongoose-legacy-pluralize-1.0.2.tgz", 431 | "integrity": "sha512-Yo/7qQU4/EyIS8YDFSeenIvXxZN+ld7YdV9LqFVQJzTLye8unujAWPZ4NWKfFA+RNjh+wvTWKY9Z3E5XM6ZZiQ==" 432 | }, 433 | "mpath": { 434 | "version": "0.7.0", 435 | "resolved": "https://registry.npmjs.org/mpath/-/mpath-0.7.0.tgz", 436 | "integrity": "sha512-Aiq04hILxhz1L+f7sjGyn7IxYzWm1zLNNXcfhDtx04kZ2Gk7uvFdgZ8ts1cWa/6d0TQmag2yR8zSGZUmp0tFNg==" 437 | }, 438 | "mquery": { 439 | "version": "3.2.2", 440 | "resolved": "https://registry.npmjs.org/mquery/-/mquery-3.2.2.tgz", 441 | "integrity": "sha512-XB52992COp0KP230I3qloVUbkLUxJIu328HBP2t2EsxSFtf4W1HPSOBWOXf1bqxK4Xbb66lfMJ+Bpfd9/yZE1Q==", 442 | "requires": { 443 | "bluebird": "3.5.1", 444 | "debug": "3.1.0", 445 | "regexp-clone": "^1.0.0", 446 | "safe-buffer": "5.1.2", 447 | "sliced": "1.0.1" 448 | }, 449 | "dependencies": { 450 | "debug": { 451 | "version": "3.1.0", 452 | "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", 453 | "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", 454 | "requires": { 455 | "ms": "2.0.0" 456 | } 457 | } 458 | } 459 | }, 460 | "ms": { 461 | "version": "2.0.0", 462 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", 463 | "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" 464 | }, 465 | "multer": { 466 | "version": "1.4.2", 467 | "resolved": "https://registry.npmjs.org/multer/-/multer-1.4.2.tgz", 468 | "integrity": "sha512-xY8pX7V+ybyUpbYMxtjM9KAiD9ixtg5/JkeKUTD6xilfDv0vzzOFcCp4Ljb1UU3tSOM3VTZtKo63OmzOrGi3Cg==", 469 | "requires": { 470 | "append-field": "^1.0.0", 471 | "busboy": "^0.2.11", 472 | "concat-stream": "^1.5.2", 473 | "mkdirp": "^0.5.1", 474 | "object-assign": "^4.1.1", 475 | "on-finished": "^2.3.0", 476 | "type-is": "^1.6.4", 477 | "xtend": "^4.0.0" 478 | } 479 | }, 480 | "negotiator": { 481 | "version": "0.6.2", 482 | "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz", 483 | "integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==" 484 | }, 485 | "object-assign": { 486 | "version": "4.1.1", 487 | "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", 488 | "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" 489 | }, 490 | "on-finished": { 491 | "version": "2.3.0", 492 | "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", 493 | "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", 494 | "requires": { 495 | "ee-first": "1.1.1" 496 | } 497 | }, 498 | "parseurl": { 499 | "version": "1.3.3", 500 | "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", 501 | "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==" 502 | }, 503 | "path-to-regexp": { 504 | "version": "0.1.7", 505 | "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", 506 | "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=" 507 | }, 508 | "process-nextick-args": { 509 | "version": "2.0.1", 510 | "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", 511 | "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" 512 | }, 513 | "proxy-addr": { 514 | "version": "2.0.6", 515 | "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.6.tgz", 516 | "integrity": "sha512-dh/frvCBVmSsDYzw6n926jv974gddhkFPfiN8hPOi30Wax25QZyZEGveluCgliBnqmuM+UJmBErbAUFIoDbjOw==", 517 | "requires": { 518 | "forwarded": "~0.1.2", 519 | "ipaddr.js": "1.9.1" 520 | } 521 | }, 522 | "qs": { 523 | "version": "6.7.0", 524 | "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz", 525 | "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==" 526 | }, 527 | "range-parser": { 528 | "version": "1.2.1", 529 | "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", 530 | "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==" 531 | }, 532 | "raw-body": { 533 | "version": "2.4.0", 534 | "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.0.tgz", 535 | "integrity": "sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q==", 536 | "requires": { 537 | "bytes": "3.1.0", 538 | "http-errors": "1.7.2", 539 | "iconv-lite": "0.4.24", 540 | "unpipe": "1.0.0" 541 | } 542 | }, 543 | "readable-stream": { 544 | "version": "1.1.14", 545 | "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", 546 | "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=", 547 | "requires": { 548 | "core-util-is": "~1.0.0", 549 | "inherits": "~2.0.1", 550 | "isarray": "0.0.1", 551 | "string_decoder": "~0.10.x" 552 | } 553 | }, 554 | "regexp-clone": { 555 | "version": "1.0.0", 556 | "resolved": "https://registry.npmjs.org/regexp-clone/-/regexp-clone-1.0.0.tgz", 557 | "integrity": "sha512-TuAasHQNamyyJ2hb97IuBEif4qBHGjPHBS64sZwytpLEqtBQ1gPJTnOaQ6qmpET16cK14kkjbazl6+p0RRv0yw==" 558 | }, 559 | "require_optional": { 560 | "version": "1.0.1", 561 | "resolved": "https://registry.npmjs.org/require_optional/-/require_optional-1.0.1.tgz", 562 | "integrity": "sha512-qhM/y57enGWHAe3v/NcwML6a3/vfESLe/sGM2dII+gEO0BpKRUkWZow/tyloNqJyN6kXSl3RyyM8Ll5D/sJP8g==", 563 | "requires": { 564 | "resolve-from": "^2.0.0", 565 | "semver": "^5.1.0" 566 | } 567 | }, 568 | "resolve-from": { 569 | "version": "2.0.0", 570 | "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-2.0.0.tgz", 571 | "integrity": "sha1-lICrIOlP+h2egKgEx+oUdhGWa1c=" 572 | }, 573 | "safe-buffer": { 574 | "version": "5.1.2", 575 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", 576 | "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" 577 | }, 578 | "safer-buffer": { 579 | "version": "2.1.2", 580 | "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", 581 | "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" 582 | }, 583 | "saslprep": { 584 | "version": "1.0.3", 585 | "resolved": "https://registry.npmjs.org/saslprep/-/saslprep-1.0.3.tgz", 586 | "integrity": "sha512-/MY/PEMbk2SuY5sScONwhUDsV2p77Znkb/q3nSVstq/yQzYJOH/Azh29p9oJLsl3LnQwSvZDKagDGBsBwSooag==", 587 | "optional": true, 588 | "requires": { 589 | "sparse-bitfield": "^3.0.3" 590 | } 591 | }, 592 | "semver": { 593 | "version": "5.7.1", 594 | "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", 595 | "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" 596 | }, 597 | "send": { 598 | "version": "0.17.1", 599 | "resolved": "https://registry.npmjs.org/send/-/send-0.17.1.tgz", 600 | "integrity": "sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg==", 601 | "requires": { 602 | "debug": "2.6.9", 603 | "depd": "~1.1.2", 604 | "destroy": "~1.0.4", 605 | "encodeurl": "~1.0.2", 606 | "escape-html": "~1.0.3", 607 | "etag": "~1.8.1", 608 | "fresh": "0.5.2", 609 | "http-errors": "~1.7.2", 610 | "mime": "1.6.0", 611 | "ms": "2.1.1", 612 | "on-finished": "~2.3.0", 613 | "range-parser": "~1.2.1", 614 | "statuses": "~1.5.0" 615 | }, 616 | "dependencies": { 617 | "ms": { 618 | "version": "2.1.1", 619 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", 620 | "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==" 621 | } 622 | } 623 | }, 624 | "serve-static": { 625 | "version": "1.14.1", 626 | "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.1.tgz", 627 | "integrity": "sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg==", 628 | "requires": { 629 | "encodeurl": "~1.0.2", 630 | "escape-html": "~1.0.3", 631 | "parseurl": "~1.3.3", 632 | "send": "0.17.1" 633 | } 634 | }, 635 | "setprototypeof": { 636 | "version": "1.1.1", 637 | "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz", 638 | "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==" 639 | }, 640 | "sift": { 641 | "version": "7.0.1", 642 | "resolved": "https://registry.npmjs.org/sift/-/sift-7.0.1.tgz", 643 | "integrity": "sha512-oqD7PMJ+uO6jV9EQCl0LrRw1OwsiPsiFQR5AR30heR+4Dl7jBBbDLnNvWiak20tzZlSE1H7RB30SX/1j/YYT7g==" 644 | }, 645 | "sliced": { 646 | "version": "1.0.1", 647 | "resolved": "https://registry.npmjs.org/sliced/-/sliced-1.0.1.tgz", 648 | "integrity": "sha1-CzpmK10Ewxd7GSa+qCsD+Dei70E=" 649 | }, 650 | "sparse-bitfield": { 651 | "version": "3.0.3", 652 | "resolved": "https://registry.npmjs.org/sparse-bitfield/-/sparse-bitfield-3.0.3.tgz", 653 | "integrity": "sha1-/0rm5oZWBWuks+eSqzM004JzyhE=", 654 | "optional": true, 655 | "requires": { 656 | "memory-pager": "^1.0.2" 657 | } 658 | }, 659 | "statuses": { 660 | "version": "1.5.0", 661 | "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", 662 | "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=" 663 | }, 664 | "streamsearch": { 665 | "version": "0.1.2", 666 | "resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-0.1.2.tgz", 667 | "integrity": "sha1-gIudDlb8Jz2Am6VzOOkpkZoanxo=" 668 | }, 669 | "string_decoder": { 670 | "version": "0.10.31", 671 | "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", 672 | "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=" 673 | }, 674 | "toidentifier": { 675 | "version": "1.0.0", 676 | "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz", 677 | "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==" 678 | }, 679 | "type-is": { 680 | "version": "1.6.18", 681 | "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", 682 | "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", 683 | "requires": { 684 | "media-typer": "0.3.0", 685 | "mime-types": "~2.1.24" 686 | } 687 | }, 688 | "typedarray": { 689 | "version": "0.0.6", 690 | "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", 691 | "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=" 692 | }, 693 | "unpipe": { 694 | "version": "1.0.0", 695 | "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", 696 | "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=" 697 | }, 698 | "util-deprecate": { 699 | "version": "1.0.2", 700 | "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", 701 | "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" 702 | }, 703 | "utils-merge": { 704 | "version": "1.0.1", 705 | "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", 706 | "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=" 707 | }, 708 | "vary": { 709 | "version": "1.1.2", 710 | "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", 711 | "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=" 712 | }, 713 | "xtend": { 714 | "version": "4.0.2", 715 | "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", 716 | "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==" 717 | } 718 | } 719 | } 720 | -------------------------------------------------------------------------------- /server/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "server", 3 | "version": "1.0.0", 4 | "description": "", 5 | "main": "app.js", 6 | "scripts": { 7 | "test": "echo \"Error: no test specified\" && exit 1", 8 | "dev": "nodemon ./app.js" 9 | }, 10 | "keywords": [], 11 | "author": "", 12 | "license": "ISC", 13 | "dependencies": { 14 | "express": "^4.17.1", 15 | "mongoose": "^5.9.9", 16 | "multer": "^1.4.2" 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /server/public/IMAGE-1587353692843.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IbrahimShamma99/file-upload/e504ec05aeab5fe3e36d418ef4a36d754b72d9ad/server/public/IMAGE-1587353692843.jpg -------------------------------------------------------------------------------- /src/App.css: -------------------------------------------------------------------------------- 1 | .App { 2 | text-align: center; 3 | } 4 | 5 | .App-logo { 6 | height: 40vmin; 7 | pointer-events: none; 8 | } 9 | 10 | @media (prefers-reduced-motion: no-preference) { 11 | .App-logo { 12 | animation: App-logo-spin infinite 20s linear; 13 | } 14 | } 15 | 16 | .App-header { 17 | background-color: #282c34; 18 | min-height: 100vh; 19 | display: flex; 20 | flex-direction: column; 21 | align-items: center; 22 | justify-content: center; 23 | font-size: calc(10px + 2vmin); 24 | color: white; 25 | } 26 | 27 | .App-link { 28 | color: #61dafb; 29 | } 30 | 31 | @keyframes App-logo-spin { 32 | from { 33 | transform: rotate(0deg); 34 | } 35 | to { 36 | transform: rotate(360deg); 37 | } 38 | } 39 | 40 | .custom-file-input { 41 | color: transparent; 42 | } 43 | .custom-file-input::-webkit-file-upload-button { 44 | visibility: hidden; 45 | } 46 | .custom-file-input::before { 47 | content: 'Select some files'; 48 | color: black; 49 | display: inline-block; 50 | background: -webkit-linear-gradient(top, #f9f9f9, #e3e3e3); 51 | border: 1px solid #999; 52 | border-radius: 3px; 53 | padding: 5px 8px; 54 | outline: none; 55 | white-space: nowrap; 56 | -webkit-user-select: none; 57 | cursor: pointer; 58 | text-shadow: 1px 1px #fff; 59 | font-weight: 700; 60 | font-size: 10pt; 61 | } 62 | .custom-file-input:hover::before { 63 | border-color: black; 64 | } 65 | .custom-file-input:active { 66 | outline: 0; 67 | } 68 | .custom-file-input:active::before { 69 | background: -webkit-linear-gradient(top, #e3e3e3, #f9f9f9); 70 | } 71 | 72 | h1 { 73 | font-weight: bold; 74 | font-family: Georgia, 'Times New Roman', Times, serif 75 | } 76 | 77 | body { 78 | padding: 20px; 79 | } 80 | 81 | .upload-button { 82 | padding: 2px; 83 | font-weight: 700; 84 | font-size: 10pt; 85 | background: -webkit-linear-gradient(top, #f9f9f9, #e3e3e3); 86 | border: 1px solid #999; 87 | color: black; 88 | 89 | } -------------------------------------------------------------------------------- /src/App.js: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import './App.css'; 3 | import axios from 'axios'; 4 | 5 | class App extends React.Component { 6 | 7 | state ={ 8 | file: null 9 | }; 10 | onFormSubmit = (e) => { 11 | e.preventDefault(); 12 | const formData = new FormData(); 13 | formData.append('myfile',this.state.file); 14 | const config = { 15 | headers: { 16 | 'content-type': 'multipart/form-data' 17 | } 18 | }; 19 | axios.post("http://localhost:5000/upload", formData, config) 20 | .then((response) => { 21 | alert("The file is successfully uploaded"); 22 | }).catch((error) => { 23 | alert(error); 24 | }); 25 | } 26 | 27 | onChange = (e) => { 28 | this.setState({file:e.target.files}); 29 | } 30 | 31 | render() { 32 | return ( 33 | 38 | ) 39 | } 40 | } 41 | 42 | export default App; 43 | -------------------------------------------------------------------------------- /src/App.test.js: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import { render } from '@testing-library/react'; 3 | import App from './App'; 4 | 5 | test('renders learn react link', () => { 6 | const { getByText } = render(