diff --git a/projet/db/hyperdrive.sql b/projet/db/hyperdrive.sql
index b28469cf73a7ce9e6e9f67d3366f698f1e097af6..ce9d4467a757b43e994184c5ef235f3c37320742 100644
--- a/projet/db/hyperdrive.sql
+++ b/projet/db/hyperdrive.sql
@@ -26,7 +26,6 @@ CREATE TABLE IF NOT EXISTS Files (
     paths varchar(400) NOT NULL,
     lat FLOAT,
     lng FLOAT,
-    addedon INT,
     PRIMARY KEY (file_id),
     FOREIGN KEY (paths) REFERENCES Paths(paths),
     FOREIGN KEY (login) REFERENCES Users(login)
@@ -66,13 +65,13 @@ VALUES
 
 INSERT INTO Files
 VALUES
-    ("abcd", "un", 'a', "/a", 46.2054, 6.1459, 1576691707),
-    ("ab", "deux", 'a', "/a", 46.2054, 6.1459, 1576691707),
-    ("@dfsg", "trois", 'c', "/c/test", 46.2054, 6.1459, 1576691707),
-    ("gbvaf", "quatre", 'b', "/b", 46.2054, 6.1459, 1576691707),
-    ("dsfgh", "cinq", 'd', "/d", 46.2054, 6.1459, 1576691707),
-    ("sdfa", "six.txt", 'e', "/e", 46.2054, 6.1459, 1576691707),
-    ("liblb", "myfile.txt", 'noe', "/n", 46.2054, 6.1459, 1576691707);
+    ("abcd", "un", 'a', "/a", 46.2054, 6.1459),
+    ("ab", "deux", 'a', "/a", 46.2054, 6.1459),
+    ("@dfsg", "trois", 'c', "/c/test", 46.2054, 6.1459),
+    ("gbvaf", "quatre", 'b', "/b", 46.2054, 6.1459),
+    ("dsfgh", "cinq", 'd', "/d", 46.2054, 6.1459),
+    ("sdfa", "six.txt", 'e', "/e", 46.2054, 6.1459),
+    ("liblb", "myfile.txt", 'noe', "/n", 46.2054, 6.1459);
 
 INSERT INTO Shares
 VALUES
diff --git a/projet/front/index.html b/projet/front/index.html
index 755d6760024f0dc5423cf6e31fe0c05527edd806..8430d32a298de80e98ec83d421504199589d707f 100644
--- a/projet/front/index.html
+++ b/projet/front/index.html
@@ -34,6 +34,11 @@
             <div id="content-drive">
 
             </div>
+            <form action="/upload/n" method="POST" encType="multipart/form-data">
+                Choose a file :<br>
+                <input type="file" name="my_file"><br>
+                <input type="submit" value="Send">
+              </form>
         </div>
         <div id="info">
             <h3>Infos</h3>
diff --git a/projet/hyperdrive-rest.js b/projet/hyperdrive-rest.js
index d07ff335cbc53c8a3ec1a49214db2db02af672e3..a4da66334b36af17363362032385b22ccba6ddfa 100644
--- a/projet/hyperdrive-rest.js
+++ b/projet/hyperdrive-rest.js
@@ -1,6 +1,20 @@
 "use strict";
 const CryptoJS = require("crypto-js");
 const http = require("http");
+var fileupload = require("express-fileupload");
+var multer  = require('multer')
+
+
+var storage = multer.diskStorage(
+    {
+        destination: './files/',
+        filename: function ( req, file, cb ) {
+            cb( null, Math.round(Math.random()*100) + Date.now().toString() );
+        }
+    }
+);
+var upload = multer( { storage: storage } );
+
 
 const express = require('express');
 const app = express();
@@ -260,35 +274,76 @@ app.get('/share/:file_id/:to_user', (req, res) => {
 /**
  * Request to upload a file
  */
-app.get('/upload/', (req, res) => {
-    let d = new Date();
-    let date_upload = d.getTime();
-    // "abcd", "un", "/a", 46.2054, 6.1459, date_upload
-
-    http.get('http://bot.whatismyipaddress.com', (res) => {
-        res.setEncoding('utf8');
-        res.on('data', function(chunk){
-            console.log(chunk);
-            let ip = chunk;
-            http.get('http://ip-api.com/json/' + ip, (resp) => {
-                let data = '';
-                resp.on('data', (chunk) => {
-                    data += chunk;
-                });
+// app.get('/upload/', (req, res) => {
+//     let d = new Date();
+//     let date_upload = d.getTime();
+//     // "abcd", "un", "/a", 46.2054, 6.1459, date_upload
+
+
+
+//     res.send(`Request for an upload (${req.query['file']})`)
+// });
 
-                resp.on('end', () => {
-                    console.log(JSON.parse(data));
+
+
+app.post('/upload*', upload.single('my_file'), (req, res) => {
+    // res.send(`Request for an upload (${req.query['file']})`)
+
+    let token = req.query["token"]
+    let user = verify_token(token)
+
+    if (user){
+        let path = req.params['0']
+
+        if (req.file){
+    
+            var file_id = Math.round(Math.random() * 100) + Date.now();
+            var file_name = "test"
+    
+    
+              
+    
+            let lat;
+            let lon;
+    
+            http.get('http://bot.whatismyipaddress.com', (result) => {
+                result.setEncoding('utf8');
+                result.on('data', function(chunk){
+                    let ip = chunk;
+                    http.get('http://ip-api.com/json/' + ip, (resp) => {
+                        let data = '';
+                        resp.on('data', (chunk) => {
+                            data += chunk;
+                        });
+        
+                        resp.on('end', () => {
+                            lat = JSON.parse(data).lat.toFixed(3);
+                            lon = JSON.parse(data).lon.toFixed(3);
+    
+                            // add to BDD
+                            sql.addFile(file_id, file_name, user, path, lat, lon, (result) => {
+                                res.send(result)
+                            })
+    
+                        });
+                    });
                 });
             });
-        });
-    });
+        }
+        else{
+            console.log("Please enter a file");
+        }
+    }
+    else{
+        res.send("Please be connected")
+    }
+    
 
-    res.send(`Request for an upload (${req.query['file']})`)
-});
+})
 
 app.get('/download/:file_id', (req, res) => {
     let token = req.query["token"]
-    let file_id = req.params["file_id"]
+    
 
     let user = verify_token(token);
     if (user){
@@ -388,4 +443,6 @@ app.get('/show-shared-file', (req, res) => {
 });
 
 app.use(express.static('front'));
+app.use(fileupload());
+var upload = multer({ dest: "files/" })
 app.listen(port, () => console.log(`Hyperdrive listening on port ${port}!`))
diff --git a/projet/package-lock.json b/projet/package-lock.json
index 745535d72e8dc11bc392eda385748d05bd7dcc3b..7ed6f24740dfd435e3cdb4209364c697ddbcf70f 100644
--- a/projet/package-lock.json
+++ b/projet/package-lock.json
@@ -13,6 +13,11 @@
         "negotiator": "0.6.2"
       }
     },
+    "append-field": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/append-field/-/append-field-1.0.0.tgz",
+      "integrity": "sha1-HjRA6RXwsSA9I3SOeO3XubW0PlY="
+    },
     "array-flatten": {
       "version": "1.1.1",
       "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz",
@@ -40,11 +45,35 @@
         "type-is": "~1.6.17"
       }
     },
+    "buffer-from": {
+      "version": "1.1.1",
+      "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz",
+      "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A=="
+    },
+    "busboy": {
+      "version": "0.3.1",
+      "resolved": "https://registry.npmjs.org/busboy/-/busboy-0.3.1.tgz",
+      "integrity": "sha512-y7tTxhGKXcyBxRKAni+awqx8uqaJKrSFSNFSeRG5CsWNdmy2BIK+6VGWEW7TZnIO/533mtMEA4rOevQV815YJw==",
+      "requires": {
+        "dicer": "0.3.0"
+      }
+    },
     "bytes": {
       "version": "3.1.0",
       "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz",
       "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg=="
     },
+    "concat-stream": {
+      "version": "1.6.2",
+      "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz",
+      "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==",
+      "requires": {
+        "buffer-from": "^1.0.0",
+        "inherits": "^2.0.3",
+        "readable-stream": "^2.2.2",
+        "typedarray": "^0.0.6"
+      }
+    },
     "content-disposition": {
       "version": "0.5.3",
       "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.3.tgz",
@@ -96,6 +125,14 @@
       "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz",
       "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA="
     },
+    "dicer": {
+      "version": "0.3.0",
+      "resolved": "https://registry.npmjs.org/dicer/-/dicer-0.3.0.tgz",
+      "integrity": "sha512-MdceRRWqltEG2dZqO769g27N/3PXfcKl04VhYnBlo2YhH7zPi88VebsjTKclaOyiuMaGU72hTfw3VkUitGcVCA==",
+      "requires": {
+        "streamsearch": "0.1.2"
+      }
+    },
     "ee-first": {
       "version": "1.1.1",
       "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz",
@@ -153,6 +190,14 @@
         "vary": "~1.1.2"
       }
     },
+    "express-fileupload": {
+      "version": "1.1.6",
+      "resolved": "https://registry.npmjs.org/express-fileupload/-/express-fileupload-1.1.6.tgz",
+      "integrity": "sha512-w24zPWT8DkoIxSVkbxYPo9hkTiLpCQQzNsLRTCnecBhfbYv+IkIC5uLw2MIUAxBZ+7UMmXPjGxlhzUXo4RcbZw==",
+      "requires": {
+        "busboy": "^0.3.1"
+      }
+    },
     "finalhandler": {
       "version": "1.1.2",
       "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz",
@@ -245,11 +290,80 @@
         "mime-db": "1.42.0"
       }
     },
+    "minimist": {
+      "version": "0.0.8",
+      "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz",
+      "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0="
+    },
+    "mkdirp": {
+      "version": "0.5.1",
+      "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz",
+      "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=",
+      "requires": {
+        "minimist": "0.0.8"
+      }
+    },
     "ms": {
       "version": "2.0.0",
       "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
       "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g="
     },
+    "multer": {
+      "version": "1.4.2",
+      "resolved": "https://registry.npmjs.org/multer/-/multer-1.4.2.tgz",
+      "integrity": "sha512-xY8pX7V+ybyUpbYMxtjM9KAiD9ixtg5/JkeKUTD6xilfDv0vzzOFcCp4Ljb1UU3tSOM3VTZtKo63OmzOrGi3Cg==",
+      "requires": {
+        "append-field": "^1.0.0",
+        "busboy": "^0.2.11",
+        "concat-stream": "^1.5.2",
+        "mkdirp": "^0.5.1",
+        "object-assign": "^4.1.1",
+        "on-finished": "^2.3.0",
+        "type-is": "^1.6.4",
+        "xtend": "^4.0.0"
+      },
+      "dependencies": {
+        "busboy": {
+          "version": "0.2.14",
+          "resolved": "https://registry.npmjs.org/busboy/-/busboy-0.2.14.tgz",
+          "integrity": "sha1-bCpiLvz0fFe7vh4qnDetNseSVFM=",
+          "requires": {
+            "dicer": "0.2.5",
+            "readable-stream": "1.1.x"
+          }
+        },
+        "dicer": {
+          "version": "0.2.5",
+          "resolved": "https://registry.npmjs.org/dicer/-/dicer-0.2.5.tgz",
+          "integrity": "sha1-WZbAhrszIYyBLAkL3cCc0S+stw8=",
+          "requires": {
+            "readable-stream": "1.1.x",
+            "streamsearch": "0.1.2"
+          }
+        },
+        "isarray": {
+          "version": "0.0.1",
+          "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz",
+          "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8="
+        },
+        "readable-stream": {
+          "version": "1.1.14",
+          "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz",
+          "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=",
+          "requires": {
+            "core-util-is": "~1.0.0",
+            "inherits": "~2.0.1",
+            "isarray": "0.0.1",
+            "string_decoder": "~0.10.x"
+          }
+        },
+        "string_decoder": {
+          "version": "0.10.31",
+          "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz",
+          "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ="
+        }
+      }
+    },
     "mysql": {
       "version": "2.17.1",
       "resolved": "https://registry.npmjs.org/mysql/-/mysql-2.17.1.tgz",
@@ -266,6 +380,11 @@
       "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz",
       "integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw=="
     },
+    "object-assign": {
+      "version": "4.1.1",
+      "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
+      "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM="
+    },
     "on-finished": {
       "version": "2.3.0",
       "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz",
@@ -396,6 +515,11 @@
       "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz",
       "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow="
     },
+    "streamsearch": {
+      "version": "0.1.2",
+      "resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-0.1.2.tgz",
+      "integrity": "sha1-gIudDlb8Jz2Am6VzOOkpkZoanxo="
+    },
     "string_decoder": {
       "version": "1.1.1",
       "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
@@ -418,6 +542,11 @@
         "mime-types": "~2.1.24"
       }
     },
+    "typedarray": {
+      "version": "0.0.6",
+      "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz",
+      "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c="
+    },
     "unpipe": {
       "version": "1.0.0",
       "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz",
@@ -437,6 +566,11 @@
       "version": "1.1.2",
       "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz",
       "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw="
+    },
+    "xtend": {
+      "version": "4.0.2",
+      "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz",
+      "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ=="
     }
   }
 }
diff --git a/projet/package.json b/projet/package.json
index 60f74e644348acb1fff078938633f4c1f9611621..00714b1ef2623dee82b55875957d5fc266f8be32 100644
--- a/projet/package.json
+++ b/projet/package.json
@@ -11,6 +11,8 @@
   "dependencies": {
     "crypto-js": "^3.1.9-1",
     "express": "^4.17.1",
+    "express-fileupload": "^1.1.6",
+    "multer": "^1.4.2",
     "mysql": "^2.17.1"
   }
 }
diff --git a/projet/sql-request.js b/projet/sql-request.js
index 9559187d1842a4c9c6015c12f0fc7c51ba94efe3..f744498a57fd928bd60775dc7cd4c329a1ac8f6b 100644
--- a/projet/sql-request.js
+++ b/projet/sql-request.js
@@ -250,6 +250,44 @@ function getSharedFile(user, callback){
      });
 }
 
+function addFile(file_id, file_name, login, paths, lat, lon, callback){
+
+
+    var q = `
+        SELECT COUNT(paths)
+        FROM Paths
+        WHERE paths = '${paths}'
+          AND login = '${login}'
+    `;
+
+    con.query(q, (err, resp) => {
+        if (err) {
+            console.log(err);
+            return callback(false, err);
+        }
+
+
+        if (resp[0]["COUNT(paths)"] > 0){
+            var q = `
+                INSERT INTO Files
+                VALUES ('${file_id}', '${file_name}', '${login}', '${paths}', '${lat}', '${lon}')
+            `;
+            con.query(q, (err, resp) => {
+                if (err) {
+                    console.log(err);
+                    return callback(false, err);
+                }                
+                return callback("ok");
+            })
+
+        }
+
+        // return callback(resp);
+    });
+
+ 
+}
+
 exports.userExist = userExist;
 exports.addUser = addUser;
 exports.addPath = addPath;
@@ -258,4 +296,5 @@ exports.changeDirectory = changeDirectory;
 exports.createPath = createPath;
 exports.verifyFileID = verifyFileID;
 exports.getInfo = getInfo;
-exports.getSharedFile = getSharedFile;
\ No newline at end of file
+exports.getSharedFile = getSharedFile;
+exports.addFile = addFile;
\ No newline at end of file