From 371b55bd643373bcc1f74860135c1cc14d49c475 Mon Sep 17 00:00:00 2001
From: Peter Hoppe
Date: Tue, 3 Jan 2023 18:20:56 +0100
Subject: [PATCH] upload php
---
.vscode/launch.json | 13 ++-
php/php-dog/classes/lib.php | 31 ++++-
php/php-dog/login.php | 3 +-
php/php-dog/upload.php | 180 ++++++++++++++++++++----------
src/services/FileUploadService.ts | 5 +-
5 files changed, 160 insertions(+), 72 deletions(-)
diff --git a/.vscode/launch.json b/.vscode/launch.json
index c24d1da..d799ae8 100644
--- a/.vscode/launch.json
+++ b/.vscode/launch.json
@@ -1,10 +1,15 @@
{
- // Verwendet IntelliSense zum Ermitteln möglicher Attribute.
- // Zeigen Sie auf vorhandene Attribute, um die zugehörigen Beschreibungen anzuzeigen.
- // Weitere Informationen finden Sie unter https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
-
+ {
+ "name": "Listen for Xdebug",
+ "type": "php",
+ "request": "launch",
+ "port": [
+ 9003,
+ 9000
+ ]
+ },
{
"type": "chrome",
"request": "launch",
diff --git a/php/php-dog/classes/lib.php b/php/php-dog/classes/lib.php
index ed0ecee..c319d6c 100644
--- a/php/php-dog/classes/lib.php
+++ b/php/php-dog/classes/lib.php
@@ -46,6 +46,23 @@ class CUser
$this->qr_id = $qr_id;
$this->email = $email;
}
+ function jsonarray()
+ {
+ return json_encode([
+ 'id' => $this->id,
+ 'qr_id' => $this->qr_id,
+ 'email' => $this->email
+ ]);
+ }
+ function phparray()
+ {
+ return ([
+ 'id' => $this->id,
+ 'qr_id' => $this->qr_id,
+ 'email' => $this->email
+ ]);
+ }
+
}
/**
@@ -81,18 +98,26 @@ function random_str(
function getNewFilename($targetDir, $fileExt, $length)
{
$newFname = random_str($length);
+
+// echo "newFname " . $newFname . "\n";
+
$maxtries = 100000; // prevent endless loop, most unlikely
$tries = 0;
+ // echo "file_exists " . $targetDir . '/' . $newFname . '.' . $fileExt . "\n";
+ // echo "file_exists " . file_exists($targetDir . '/' . $newFname . '.' . $fileExt) . "\n";
while(file_exists($targetDir . '/' . $newFname . '.' . $fileExt) && $tries < $maxtries)
{
+// echo "file_exists " . $targetDir . '/' . $newFname . '.' . $fileExt . "\n";
++$tries;
$newFname = random_str($length);
+ // echo "tries " . $tries . "\n";
+ // echo "newFname " . $newFname . "\n";
}
- if($tries < $maxtries)
+ if($tries >= $maxtries)
{
$newFname = "";
}
- return $newFname;
+ return $newFname .".".$fileExt;
}
-?>
\ No newline at end of file
+?>
diff --git a/php/php-dog/login.php b/php/php-dog/login.php
index b9779e5..299dd51 100644
--- a/php/php-dog/login.php
+++ b/php/php-dog/login.php
@@ -89,7 +89,8 @@ try
$row['qr_id'],
$row['email']
);
- $_SESSION['user'] = $user;
+// $_SESSION['user'] = $user;
+ $_SESSION['user'] = $user->phparray();
$returnData = new CMsg(
1,
diff --git a/php/php-dog/upload.php b/php/php-dog/upload.php
index 5b4f5b6..1b22ee7 100644
--- a/php/php-dog/upload.php
+++ b/php/php-dog/upload.php
@@ -5,79 +5,135 @@ header("Access-Control-Allow-Methods: POST");
header("Content-Type: application/json; charset=UTF-8");
header("Access-Control-Allow-Headers: Content-Type, Access-Control-Allow-Headers, Authorization, X-Requested-With");
-session_start();
-require __DIR__.'/classes/Database.php';
-require __DIR__.'/classes/lib.php';
+try {
-$result = new CMsg(0);
-if(!isset($_SESSION["user"]))
-{
- $result = new CMsg(0, 401, "not logged in");
- return $result->jsonarray();
-}
+ session_start();
-$user = $_SESSION["user"];
-$allowTypes = array('jpg','png','jpeg','gif','pdf');
+// $resp = json_decode('
+// {
+// "success": 1,
+// "user": {
+// "__PHP_Incomplete_Class_Name": "CUser",
+// "id": 11,
+// "qr_id": "YQiwEB",
+// "email": "p.para@gmx.de"
+// }
+// }');
-// File upload path
-$targetDir = "uploads/".$user->qr_id;
-if (!file_exists($targetDir))
-{
- mkdir($targetDir, 0755, true);
-}
+// $_SESSION["user"] = $resp["user"];
-$fileName = basename($_FILES["file"]["name"]);
-$fileType = pathinfo($fileName,PATHINFO_EXTENSION);
+ require __DIR__ . '/classes/Database.php';
+ require __DIR__ . '/classes/lib.php';
-if(!in_array($fileType, $allowTypes))
-{
- $result = new CMsg(
- 0,
- 406,
- 'Sorry, only JPG, JPEG, PNG, GIF, & PDF files are allowed to upload.');
- return $result->jsonarray();
-}
+ $result = new CMsg(0);
-$newFilename = getNewFilename($targetDir, $fileType, 20);
-if(strlen($newFilename) == 0)
-{
- $result = new CMsg(
- 0,
- 507,
- 'Too many uploaded files on the server, try it again later');
- return $result->jsonarray();
-}
-
-$targetFilePath = $targetDir . '/' . $fileName;
-
-if(isset($_POST["submit"]) && !empty($_FILES["file"]["name"]))
-{
- // Upload file to server
- if(move_uploaded_file($_FILES["file"]["tmp_name"], $targetFilePath))
+ if (!isset($_SESSION["user"]))
{
- // Insert image file name into database
- $update = $db->query("UPDATE dogs SET picture = '".$fileName."' WHERE qr_id = ".$user->qr_id);
- if($update)
- {
- $result = new CMsg(1,200,"The file ".$fileName. " has been uploaded successfully.");
- }
- else
- {
- $result = new CMsg(0,500,"File upload failed, please try again.");
- }
+ $result = new CMsg(0, 401, "not logged in");
+ echo $result->jsonarray();
+ return $result->jsonarray();
}
+
+ $user = $_SESSION["user"];
+ $allowTypes = array('jpg', 'png', 'jpeg', 'gif', 'pdf');
+ //echo var_dump($user);
+ // File upload path
+ $targetDir = "../uploads/" . $user["qr_id"];
+ if (!file_exists($targetDir))
+ {
+ mkdir($targetDir, 0755, true);
+ }
+ echo "targetDir ". $targetDir . "\n";
+
+ $fileName = basename($_FILES["file"]["name"]);
+ $fileType = pathinfo($fileName, PATHINFO_EXTENSION);
+
+ echo "fileName ".$fileName . "\n";
+ echo "fileType ".$fileType . "\n";
+
+ if (!in_array($fileType, $allowTypes))
+ {
+ $result = new CMsg(
+ 0,
+ 406,
+ 'Sorry, only JPG, JPEG, PNG, GIF, & PDF files are allowed to upload.'
+ );
+ echo $result->jsonarray();
+ return $result->jsonarray();
+ }
+
+ $newFilename = getNewFilename($targetDir, $fileType, 20);
+
+ echo "newFilename ".$newFilename . "\n";
+
+
+ if (strlen($newFilename) == 0)
+ {
+ $result = new CMsg(
+ 0,
+ 507,
+ 'Too many uploaded files on the server, try it again later'
+ );
+ echo $result->jsonarray();
+
+ return $result->jsonarray();
+ }
+
+ $targetFilePath = $targetDir . '/' . $newFilename;
+ echo "targetFilePath ". $targetFilePath."\n";
+
+ if (isset($_POST["submit"]) && !empty($_FILES["file"]["name"]))
+ {
+ echo "submit file name ". $_FILES["file"]["name"]."\n";
+ // Upload file to server
+ if (move_uploaded_file($_FILES["file"]["tmp_name"], $targetFilePath))
+ {
+ echo "move ok! ". $targetFilePath."\n";
+ $newPathFilename = '/' . $user["qr_id"] . '/' . $newFilename;
+ echo "query " . "UPDATE dogs SET picture = '" . $newPathFilename . "' WHERE qr_id = '" . $user["qr_id"]."'\n";
+ $db_connection = new Database();
+ $conn = $db_connection->dbConnection();
+
+
+ echo var_dump($conn);
+ // Insert image file name into database
+ $statement = $conn->prepare("UPDATE dogs SET picture = :filePic WHERE qr_id = :user_qr_id");
+ $update = $statement->execute(array('filePic' => $newPathFilename, 'user_qr_id' => $user["qr_id"]));
+ echo var_dump($update);
+ $count = $statement->rowCount();
+ echo 'rowcount ' . $count . '\n';
+
+
+
+ if ($update && $count > 0)
+ {
+ $result = new CMsg(1, 200, "The file " . $newPathFilename . " has been uploaded successfully.");
+ echo $result->jsonarray();
+ }
+ else
+ {
+ $result = new CMsg(0, 500, "File upload failed, please try again.");
+ echo $result->jsonarray();
+ }
+ }
+ else
+ {
+ $result = new CMsg(0, 500, "Sorry, there was an error uploading your file.");
+ }
+ }
else
{
- $result = new CMsg(0,500,"Sorry, there was an error uploading your file.");
+ $result = new CMsg(1, 204, 'Please select a file to upload.');
}
-}
-else
-{
- $result = new CMsg(1,204,'Please select a file to upload.');
-}
-// Display status message
-echo $result->jsonarray();
-?>
\ No newline at end of file
+ // Display status message
+ echo $result->jsonarray();
+}
+catch(Exception $e)
+{
+ $result = new CMsg(0, 500, $e->getMessage() );
+ echo $result->jsonarray();
+}
+?>
diff --git a/src/services/FileUploadService.ts b/src/services/FileUploadService.ts
index b673738..317aa6c 100644
--- a/src/services/FileUploadService.ts
+++ b/src/services/FileUploadService.ts
@@ -6,6 +6,7 @@ const upload = (file: File, onUploadProgress: any): Promise => {
let formData = new FormData();
formData.append("file", file);
+ formData.append("submit", "1");
let uploadRes = Axios.post("upload.php", formData, {
headers: {
@@ -14,8 +15,8 @@ const upload = (file: File, onUploadProgress: any): Promise => {
onUploadProgress,
});
- let a: number = 1+3;
- a++;
+ // let a: number = 1+3;
+ // a++;
return uploadRes;
};