Database = system
Table = file
CREATE TABLE `file` (
`file_id` int(11) NOT NULL,
`name` varchar(200) NOT NULL,
`file` varchar(500) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET
1. index.php
<!DOCTYPE html>
<html>
<head>
<title>Upload dan Download File</title>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.0/jquery.min.js"></script>
<link rel="stylesheet"
href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css" />
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
<!--Script CSS-->
<link type="text/css" href='https://cdn.datatables.net/1.10.16/css/jquery.dataTables.min.css'
rel='stylesheet'>
<link type="text/css"
href='https://cdn.datatables.net/responsive/2.2.1/css/responsive.dataTables.min.css' rel='stylesheet'>
<link type="text/css" href='https://cdn.datatables.net/buttons/1.5.1/css/buttons.dataTables.min.css'
rel='stylesheet'>
</head>
<body>
<br /><br />
<div class="container">
<nav class="navbar navbar-inverse">
<div class="container-fluid">
<div class="navbar-header">
<a class="navbar-brand" href="https://www.tutorialswb.com">TutorialsWB</a>
</div>
</div>
</nav>
<br />
<br />
<form class="form-inline" method="POST" action="upload.php" enctype="multipart/form-data">
<input class="form-control" type="file" name="upload"/>
<button type="submit" class="btn btn-success form-control" name="submit"><span class="glyphicon
glyphicon-upload"></span> Upload</button>
</form>
<br /><br />
<div class="form-group">
<table id="example" class="display responsive nowrap" style="width:100%">
<thead>
<tr>
<th>No</th>
<th>File Name</th>
<th>Action</th>
</tr>
</thead>
<tbody class="alert-success">
<?php
require 'config.php';
$row = $conn->query("SELECT * FROM `file`") or die(mysqli_error());
while($fetch = $row->fetch_array()){
?>
<tr>
<?php
$name = explode('/', $fetch['file']);
?>
<td><?php echo $fetch['file_id']?></td>
<td><?php echo $fetch['name']?></td>
<td><a href="download.php?file=<?php echo $name[1]?>" class="btn btn-primary"><span
class="glyphicon glyphicon-download"></span> Download</a></td>
</tr>
<?php
?>
</tbody>
</table>
</div>
<!--Script Javascript-->
<script src="https://code.jquery.com/jquery-1.12.4.js"></script>
<script src="https://cdn.datatables.net/1.10.16/js/jquery.dataTables.min.js"></script>
<script src="https://cdn.datatables.net/responsive/2.2.1/js/dataTables.responsive.min.js"></script>
<script src="https://cdn.datatables.net/buttons/1.5.1/js/dataTables.buttons.min.js"></script>
<script src="https://cdn.datatables.net/buttons/1.5.1/js/buttons.colVis.min.js"></script>
<script>
$(document).ready(function() {
$('#example').DataTable( {
dom: 'Bfrtip',
buttons: [
'colvis'
} );
} );
</script>
</body>
</html>
2. config.php
<?php
$conn = new mysqli('localhost', 'root', '', 'system');
if($conn->connect_error){
die("Fatal Error: Can't connect to database: ". $conn->connect_error);
?>
3. upload.php
<?php
require_once 'config.php';
if(ISSET($_POST['submit'])){
if($_FILES['upload']['name'] != "") {
$file = $_FILES['upload'];
$file_name = $file['name'];
$file_temp = $file['tmp_name'];
$name = explode('.', $file_name);
$path = "files/".$file_name;
$conn->query("INSERT INTO `file` VALUES('', '$name[0]', '$path')") or die(mysqli_error());
move_uploaded_file($file_temp, $path);
header("location:index.php");
}else{
echo "<script>alert('Required Field!')</script>";
echo "<script>window.location='index.php'</script>";
?>
4. download.php
<?php
if(ISSET($_REQUEST['file'])){
$file = $_REQUEST['file'];
//header("Cache-Control: public");
//header("Content-Description: File Transfer");
header("Content-Disposition: attachment; filename=".basename($file));
header("Content-Type: application/octet-stream;");
//header("Content-Transfer-Encoding: binary");
readfile("files/".$file);
?>