Reputation: 35
I'm uploading PDFs to a directory and my script works fine for one directory but I'm having troubles coming up with a way to write the script efficiently when I have more then one directory to upload PDFs on a page. I know of a few ways I can do it, like write another function like below but there must be a better way so I dont have to write out the whole script for every directory I want to upload PDFs to. Code below.
if(is_post_request()) {
$targetdirectory = "../../pathofdirectory/pdf/";
$targetdirectory = $targetdirectory . basename( $_FILES['file']['name']) ;
$file_type=$_FILES['file']['type'];
if ($file_type=="application/pdf") {
if(move_uploaded_file($_FILES['file']['tmp_name'], $targetdirectory))
{
$message = "The file ". basename( $_FILES['file']['name']). " is uploaded";
}
else {
$message = "Problem uploading file";
}
}
else {
$message = "You may only upload PDFs.<br>";
}
}
And of course the simple form
<form action="" method="post" enctype="multipart/form-data">
<input type="file" name="file" size="50" />
<input class="button common" type="submit" value="Submit" />
</form>
Thanks in advance for any suggestions.
Upvotes: 1
Views: 152
Reputation: 401
If you're okay with allowing users choosing which directory to upload to, you can give them the option.
<form action="" method="post" enctype="multipart/form-data">
<input type="file" name="file" size="50" />
<select name="folderOption">
<option value="1">First Folder</option>
<option value="2">Second Folder</option>
<option value="3">Third Folder</option>
</select>
<input class="button common" type="submit" value="Submit" />
</form>
Obviously, you would need to validate server-side for bad data.
if (is_post_request()) {
$targetdirectory = "../../pathofdirectory/pdf/";
$targetdirectory = $targetdirectory . basename( $_FILES['file']['name']) ;
$file_type = $_FILES['file']['type'];
$folderOption = $_POST['folderOption'];
if ($folderOption == 1 || $folderOption == 2 || $folderOption == 3) {
switch ($folderOption) {
case 1:
$targetdirectory = "../../pathofdirectory/pdf/";
break;
case 2:
$targetdirectory = "../../pathofdirectory2/pdf/";
break;
case 3:
$targetdirectory = "../../pathofdirectory3/pdf/";
break;
default:
$targetdirectory = "../../pathofdirectory/pdf/";
}
if ($file_type == "application/pdf") {
if(move_uploaded_file($_FILES['file']['tmp_name'], $targetdirectory)) {
$message = "The file ". basename( $_FILES['file']['name']). " is uploaded";
} else {
$message = "Problem uploading file";
}
} else {
$message = "You may only upload PDFs.<br>";
}
} else {
$message = "Bad data received for directory choice.<br>";
}
}
Upvotes: 1