diff options
Diffstat (limited to 'public/upload.php')
| -rw-r--r-- | public/upload.php | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/public/upload.php b/public/upload.php index 96d1f4b..1f5b838 100644 --- a/public/upload.php +++ b/public/upload.php @@ -162,11 +162,27 @@ try { 'download_url' => INSTANCE_URL . "/{$file_data['id']}.{$file_data['extension']}" ]; + if (FILE_METADATA && FILE_DELETION) { + $file_data['password'] = $_POST['password'] ?? generate_random_char_sequence(FILE_ID_CHARACTERS, FILE_DELETION_KEY_LENGTH); + $file_data['urls']['deletion_url'] = INSTANCE_URL . "/delete.php?f={$file_data['id']}.{$file_data['extension']}&key={$file_data['password']}"; + } + if ($_SERVER['HTTP_ACCEPT'] == 'application/json') { json_response($file_data, null, 201); } else { header("Location: /{$file_data['id']}.{$file_data['extension']}"); } + + if (FILE_METADATA) { + unset($file_data['urls']); + $file_data['password'] = password_hash($file_data['password'], PASSWORD_DEFAULT); + if (!is_dir(FILE_METADATA_DIRECTORY) && !mkdir(FILE_METADATA_DIRECTORY, 0777, true)) { + throw new RuntimeException('Failed to create a folder for file metadata'); + } + if (!file_put_contents(FILE_METADATA_DIRECTORY . "/{$file_data['id']}.metadata.json", json_encode($file_data, JSON_UNESCAPED_SLASHES))) { + throw new RuntimeException('Failed to create a file metadata'); + } + } } catch (RuntimeException $e) { if ($_SERVER['HTTP_ACCEPT'] == 'application/json') { json_response(null, $e->getMessage(), 400); |
