PHP File Uploader  | Member | | Join Date: Jan 2008 Location: Gauteng, South Africa
Posts: 42
| |
I need a PHP script that can upload music files (mp3). The script is for a home project I have started a while ago. I have a MySQL database of all the music that I have. Other computers on the network should be able to connect to the database and run queries on the database or upload new music that does not yet exist on the database. The uploaded file's name should be in the following format: ARTIST - TITLE.mp3. I have the code to upload images, but have no idea what to change to make it music compatible and correctly rename the file and move it to the correct folder. Here is the code I have: -
<?php
-
// filename: upload.form.php
-
// make a note of the current working directory relative to root.
-
$directory_self = str_replace(basename($_SERVER['PHP_SELF']), '', $_SERVER['PHP_SELF']);
-
// make a note of the location of the upload handler
-
$uploadHandler = 'http://' . $_SERVER['HTTP_HOST'] . $directory_self . 'upload.processor.php';
-
// set a max file size for the html upload form
-
$max_file_size = 28311552; // size in bytes (27 MB max)
-
?>
-
<html lang="en">
-
<head>
-
<meta http-equiv="content-type" content="text/html; charset=iso-8859-1">
-
<link rel="stylesheet" type="text/css" href="stylesheet.css">
-
<title>Upload form</title>
-
</head>
-
<body>
-
<form id="Upload" action="<?php echo $uploadHandler ?>" enctype="multipart/form-data" method="post">
-
<h1>
-
Upload form
-
</h1>
-
<p>
-
<input type="hidden" name="MAX_FILE_SIZE" value="<?php echo $max_file_size ?>">
-
</p>
-
<p>
-
<label for="file">File to upload:</label>
-
<input id="file" type="file" name="file">
-
</p>
-
<p>Artist:<input type="text" name="artist" size="24"></p>
-
<p>Title:<input type="text" name="title" size="24"></p>
-
<p>Album:<input type="text" name="album" size="24"></p>
-
<p>Lenth:<input type="text" name="lenth" size="24"></p>
-
<p>Genre:<input type="text" name="genre" size="24"></p>
-
<p>
-
<label for="submit">Press to...</label>
-
<input id="submit" type="submit" name="submit" value="Upload me!">
-
</p>
-
</form>
-
</body>
-
</html>
-
-
<?php
-
// filename: upload.processor.php
-
// make a note of the current working directory, relative to root.
-
$directory_self = str_replace(basename($_SERVER['PHP_SELF']), '', $_SERVER['PHP_SELF']);
-
// make a note of the directory that will recieve the uploaded files
-
$uploadsDirectory = $_SERVER['DOCUMENT_ROOT'] . $directory_self . 'uploaded_files/$artist/';
-
// make a note of the location of the upload form in case we need it
-
$uploadForm = 'http://' . $_SERVER['HTTP_HOST'] . $directory_self . 'upload.form.php';
-
// make a note of the location of the success page
-
$uploadSuccess = 'http://' . $_SERVER['HTTP_HOST'] . $directory_self . 'upload.success.php';
-
// name of the fieldname used for the file in the HTML form
-
$fieldname = 'file';
-
// possible PHP upload errors
-
$errors = array(1 => 'php.ini max file size exceeded',
-
2 => 'html form max file size exceeded',
-
3 => 'file upload was only partial',
-
4 => 'no file was attached');
-
// check the upload form was actually submitted else print form
-
isset($_POST['submit'])
-
or error('the upload form is neaded', $uploadForm);
-
// check for standard uploading errors
-
($_FILES[$fieldname]['error'] == 0)
-
or error($errors[$_FILES[$fieldname]['error']], $uploadForm);
-
// check that the file we are working on really was an HTTP upload
-
@is_uploaded_file($_FILES[$fieldname]['tmp_name'])
-
or error('not an HTTP upload', $uploadForm);
-
// make a unique filename for the uploaded file and check it is
-
// not taken... if it is keep trying until we find a vacant one
-
$now = time();
-
while(file_exists($uploadFilename = $uploadsDirectory.$now.'-'.$_FILES[$fieldname]['name']))
-
{
-
$now++;
-
}
-
// now let's move the file to its final and allocate it with the new filename
-
@move_uploaded_file($_FILES[$fieldname]['tmp_name'], $uploadFilename)
-
or error('receiving directory insuffiecient permission', $uploadForm);
-
// We are now going to redirect the client to the success page.
-
header('Location: ' . $uploadSuccess);
-
// make an error handler which will be used if the upload fails
-
function error($error, $location, $seconds = 5)
-
{
-
header("Refresh: $seconds; URL=\"$location\"");
-
echo
-
'<html lang="en">'."\n".
-
' <head>'."\n".
-
' <meta http-equiv="content-type" content="text/html; charset=iso-8859-1">'."\n\n".
-
' <link rel="stylesheet" type="text/css" href="stylesheet.css">'."\n\n".
-
' <title>Upload error</title>'."\n\n".
-
' </head>'."\n\n".
-
' <body>'."\n\n".
-
' <div id="Upload">'."\n\n".
-
' <h1>Upload failure</h1>'."\n\n".
-
' <p>An error has occured: '."\n\n".
-
' <span class="red">' . $error . '...</span>'."\n\n".
-
' The upload form is reloading</p>'."\n\n".
-
' </div>'."\n\n".
-
'</html>';
-
exit;
-
} // end error handler
-
?>
-
-
<?php
-
// filename: upload.success.php
-
?>
-
<html lang="en">
-
<head>
-
<meta http-equiv="content-type" content="text/html; charset=iso-8859-1">
-
<link rel="stylesheet" type="text/css" href="stylesheet.css">
-
<title>Successful upload</title>
-
</head>
-
<body>
-
<div id="Upload">
-
<h1>File upload</h1>
-
<p>Congratulations! Your file upload was successful</p>
-
</div>
-
</body>
-
</html>
-
Please help me to get this script ready for my database. I know how to insert a new entry in the database but that would be done later after the main part do what it should do.
| | Newbie | | Join Date: Jun 2008
Posts: 25
| | | re: PHP File Uploader
Here's the code snippet to rename the uploaded file to ARTIST - TITLE.mp3 and move it to destination folder. -
<?php
-
/* obtain artist name and title from previous form */
-
$artist = $_POST['artist'];
-
$title = $_POST['title'];
-
-
/* new name for the uploaded mp3 */
-
$filename = "$artist - $title.mp3";
-
-
/* change to the directory of your mp3s */
-
$destpath = "C:/www/uploads/mp3";
-
-
/* move uploaded file to destination path */
-
if (is_uploaded_file($_FILES['file']['tmp_name'])) {
-
move_uploaded_file($_FILES['file']['tmp_name'], "$destpath/$filename");
-
}
-
?>
-
|  | Member | | Join Date: Jan 2008 Location: Gauteng, South Africa
Posts: 42
| | | re: PHP File Uploader
How do I specify that the PHP should create the directory if the directory does not exist. I want all music to also be sorted ARTIST/ALBUM/ARTIST - TITLE.mp3. Every Thing works well when I create the path myself but the script should do it.
Thank you for the help
|  | Moderator | | Join Date: Jun 2007 Location: York, England, with wolves.
Posts: 4,949
| | | re: PHP File Uploader Quote:
Originally Posted by Jacotheron How do I specify that the PHP should create the directory if the directory does not exist. I want all music to also be sorted ARTIST/ALBUM/ARTIST - TITLE.mp3. Every Thing works well when I create the path myself but the script should do it.
Thank you for the help Have a look at is_dir()
:)
|  | Member | | Join Date: Jan 2008 Location: Gauteng, South Africa
Posts: 42
| | | re: PHP File Uploader Quote:
Originally Posted by markusn00b Have a look at is_dir()
:) Now I could test if the directory exist, but how do I command PHP to create the directory if it does not exist? That is my biggest problem.
Thank you for the help
| | Newbie | | Join Date: Jun 2008
Posts: 25
| | | re: PHP File Uploader -
<?
-
$dir = '/some/path/to/mp3';
-
-
if (is_dir($dir)) {
-
echo "directory exists";
-
} else {
-
echo "directory doesn't exist.";
-
/* and create the directory */
-
mkdir($dir, 0700);
-
}
-
?>
-
|  | Member | | Join Date: Jan 2008 Location: Gauteng, South Africa
Posts: 42
| | | re: PHP File Uploader Quote:
Originally Posted by nashruddin -
<?
-
$dir = '/some/path/to/mp3';
-
-
if (is_dir($dir)) {
-
echo "directory exists";
-
} else {
-
echo "directory doesn't exist.";
-
/* and create the directory */
-
mkdir($dir, 0700);
-
}
-
?>
-
When I enter this information, and run it with WAMP, I get the following error message: "Warning: mkdir() [function.mkdir]: No such file or directory in the directory". I have changed the $dir to my variable and it just do not want to create the directory. It seems that it is looking for a function that describes exactly what it should do.
Thank you for the help
|  | | | | /bytes/about
We are a network of experts and professionals in IT and software development that help one another with answers to tough questions and share insights.
Get the best answers to your questions from over 226,501 network members.
|