-
Notifications
You must be signed in to change notification settings - Fork 0
/
FileStorage.php
44 lines (37 loc) · 971 Bytes
/
FileStorage.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
<?php
namespace alvin\phpmvc;
/**
* File storage class
*/
class FileStorage {
/**
* Put a file.
*
* check if specified path exists and puts the file there with unique filename
*
* @param string $uploadPath The path of the file
* @param string $fileName The name of the file
* @return string The filename
*/
public function put(string $uploadPath, string $fileName) {
$file = Application::$app->request->input($fileName);
if ($uploadPath[-1] == '/') {
$uploadPath = substr_replace($uploadPath, "", -1);
}
if (!$file) {
return false;
}
$fileExt = $file['ext'];
$uploadName = bin2hex(random_bytes(10)) . "." . $fileExt;
$uploadPathWithFilename = $uploadPath . "/" . $uploadName;
$tempPath = $file['tmp_name'];
echo $uploadPathWithFilename;
if (!is_dir($uploadPath)) {
mkdir($uploadPath, 0777, true);
}
if (!move_uploaded_file($tempPath, $uploadPathWithFilename)) {
return false;
}
return $uploadName;
}
}