Im having problems with my uploading form using php I have created pages like this in the past but for some reason this one seems to be playing up I'm hoping i have just missed something so simple. Im trying to create and upload form to upload Wav, rar, zip and txt files and returning error on everything else.
If i try and upload a file which is not related to these it shows an error but if i try to upload a wav or a zip file it doesn't work i don't get any kind of error report but if i was to upload a .txt file it seems to work fine.
my html code is;
<form action="<?php echo $site_url; ?>upload.php" enctype="multipart/form-data" method="post">
<input type="hidden" name="upload" id="upload" value="upload" />
<label for="invoice"><strong>Select Invoice Number</strong></label>
<select name="invoice" <?php if (array_key_exists('invoice', $add_product_errors)) echo ' class="error"'; ?>>
<?php while($row = mysqli_fetch_array($r)){ ?>
<option value="<?php echo $row[0] ; ?>"
<?php if (isset($_POST['invoice']) && ($_POST['invoice'] == $row[0]) ) echo ' selected="selected"';
echo ">" .$row[0]. "</option>\n"; ?>
<?php } ?>
</select><?php if (array_key_exists('invoice', $add_product_errors)) echo ' <span class="error">' .$add_product_errors['invoice']. '</span>'; ?>
<label for="track"><strong>Upload File</strong></label>
<input type="hidden" name="MAX_FILE_SIZE" value="5120000" />
<input type="file" name="song" id="song" <?php if (array_key_exists('song', $add_product_errors)){ echo " class=\"error\" /> <span class=\"error\">" .$add_product_errors['song']. "</span>"; }else{ echo ' />'; if (isset($_SESSION['song'])){ echo " CURRENTLY '{$_SESSION['song']['file_name']}'"; } } ?>
<input type="submit" name="upload_files" id="upload_files" value="Upload Files" />
</form>
and my php script;
if(isset( $_POST['upload'])){
if(is_uploaded_file($_FILES['song']['tmp_name']) && ($_FILES['song']['error'] == UPLOAD_ERR_OK)){
$file = $_FILES['song'];
$size = ROUND($file['size']/1024);
if($size > 5120000){
$add_product_errors['song'] = 'The File Size is too Big';
}// END FILE SIZE
$allowed_mime = array('audio/wav', 'audio/x-wav', 'application/x-compressed', 'application/x-zip-compressed', 'application/zip', 'multipart/x-zip', 'text/plain');
$allowed_extensions = array('.wav', '.zip', '.rar', '.txt');
$ext = substr($file['name'], -4);
if((!in_array($file['type'], $allowed_mime))
|| (!in_array($ext, $allowed_extensions))
){
$add_product_errors['song'] = "We Only accept .wav and .zip files please do not send .mp3 files";
}// END IF WRONG EXT
if (!array_key_exists('song', $add_product_errors)){
$dest = "clients/" . $username[0] . "/" . $_POST['invoice'] . "/" . $file['name'];
if(move_uploaded_file($file['tmp_name'], $dest)){
// $_SESSION['image']['new_name'] = $new_name;
$_SESSION['song']['file_name'] = $file['name'];
$add_product['text'] = "Files has successfully been moved
\n";
}else{
trigger_error('the file could not be moved.');
unlink($file['tmp_name']);
}// END if file is moved
}// END if file can be moved
}elseif (!isset($_SESSION['song'])){
switch ($_FILES['song']['error']){
case 1:
case 2:
$add_product_errors['song'] = "File is too big 5GB Max";
break;
case 3:
$add_product_errors['song'] = "the file was partially uploaded";
break;
case 6:
case 7:
case 8:
$add_product_errors['song'] = "Couldn't upload due to a system error";
break;
case 4:
default:
$add_product_errors['song'] = "No file was uploaded";
break;
}//END OF SWITCH
}
if(empty($add_product_errors)){
echo 'yes';
$body = $username[0] . " has uploaded files in to " . $_POST['invoice'] . " Ready to start downloading and working on";
//mail($site_email, 'file has been loaded',$body,'from:' .$site_email);
//$_POST = array();
//$files = array();
unset($file,$_SESSION['song']);
}
}//END IF $_POST UPLOAD
any help would be so much appreciated thank you
error_reporting(E_ALL); ini_set('display_errors', 1);see if it yields anything. - Funk Forty Niner