- Introduction
- Functionality
- Screenshot
- Usage
- Technologies Used
- Best Practices
- Code Explanation
- Roadmap
The Single File PHP File Browser is a lightweight and straightforward project that provides a web-based directory listing for the files contained within a specified directory. This project serves as a quick and easy way to share files or documents with others via a web interface. This code provides a flexible way to display and customize directory listings, making it useful for creating file browsers and similar applications.
The project offers the following functionalities:
- Lists files and folders contained within a specified directory.
- Allows users to navigate through the directory structure.
- Differentiates between files and folders.
- Excludes specific file extensions, such as PHP and SWP from the listing.
To use the Single File PHP File Browser, follow these simple steps:
-
Download the
index.php
file from this project. -
Place the
index.php
file in the folder you want to share on the web. -
Access the folder using a web browser. You can do this by entering the folder's URL in your web browser's address bar. For example, if you placed
index.php
in a folder called "stuff" on your web server, you would access it like this:http://yourdomain.com/stuff/
.
The index.php
file will automatically generate a directory listing for the specified folder, allowing you to view and access the contained files and folders via a user-friendly web interface.
- PHP: PHP is used to generate the directory listing and handle file system operations.
- HTML/CSS: HTML and CSS are used for the presentation and styling of the directory listing.
- JavaScript: to implement client-side features.
- Font Awesome: Font Awesome icons are used to enhance the visual representation of files and folders.
To maintain simplicity and effectiveness, this project follows some best practices:
- Minimalism: The code is kept minimal and straightforward to ensure ease of understanding and maintenance.
- Security: Security measures are taken by excluding certain file extensions to prevent exposing sensitive files (e.g., PHP files).
- User Experience: The interface is designed for user-friendliness, with clear differentiations between files and folders.
This PHP code snippet is designed to generate a directory listing for a specified directory, presenting its contents in a structured HTML format. The code can be used to showcase files and subdirectories while allowing for customization of icons based on file extensions. Below is a breakdown of how the code works:
function listDirectory($directory) {
// ...
}
listDirectory
is a recursive function that takes the path to a directory as its parameter.
$files = scandir($directory);
scandir
is used to retrieve an array of files and directories within the specified$directory
.
$notAllowedExtensions = array('html', 'php', 'swp', 'css');
- An array,
$notAllowedExtensions
, is defined to store file extensions that should be excluded from the listing. These extensions won't be displayed in the directory listing.
$iconMapping = array(
'pdf' => 'icon-pdf',
'doc' => 'icon-doc',
'txt' => 'icon-txt',
'zip' => 'icon-zip',
'md' => 'icon-md',
'tar' => 'icon-tar',
'gz' => 'icon-gz',
'sh' => 'icon-sh',
// Add more mappings as needed
);
$iconMapping
is an associative array that maps file extensions to corresponding CSS icon classes. These classes determine the icons displayed next to file names in the directory listing.
echo '<ul class="folder-contents">';
foreach ($files as $file) {
// ...
}
echo '</ul>';
- An unordered list (
<ul>
) with the class "folder-contents" is initiated to structure the directory listing.
foreach ($files as $file) {
// ...
}
- A
foreach
loop iterates through the files and directories obtained from$files
.
if (is_dir($path)) {
// ...
}
- If the current item in the loop is a directory, it is displayed as a folder in the listing. The function
listDirectory
is then called recursively to list the contents of the subdirectory.
$iconClass = isset($iconMapping[$extension]) ? $iconMapping[$extension] : 'icon-default';
echo '<li><i class="' . $iconClass . '"></i><a href="' . $file . '">' . $file . '</a></li>';
- Icons are customized based on file extensions using the
$iconMapping
array. If an extension is not found in the mapping, it defaults to 'icon-default'. - Hyperlinks are generated for each file or directory entry.
$directory = './'; // Specify the directory you want to list
- The
$directory
variable is set to the path of the directory you want to list.
listDirectory($directory);
- Finally, the
listDirectory
function is called with the specified directory to generate the directory listing.
Here are some planned enhancements for the Single File PHP File Browser:
- Mouse-over File Preview: Implement mouse-over file preview to display a small preview when hovering over file links.
- Bulk Downloads: Add the ability to select and download multiple files at once. [In progress]
- Pagination: Implement pagination for directories with a large number of files and folders.
- Lazy Loading: Improve performance by implementing lazy loading for large directories.
- Refactor: Rewrite code into a class based design.
Feel free to contribute to the project and help make these enhancements a reality.