[thelist] PHP File upload suggestions
Rob Smith
rob.smith at THERMON.com
Fri Feb 11 12:07:14 CST 2005
Hi Tom,
I used this script on a Freelance project just recently. The idea is the
customer can use a new image, or an existing one from a drop down box.
Here's the PHP code:
if ($_POST["Preview"] != "" || $_POST["Add"] != "") {
if ($_FILES['ProductPicture']['name'] != "") {
$results_file = mysql_query("SELECT Username, CustDiskQuota FROM
TMDVendors WHERE vid = " . $_SESSION["vid"],$link);
if(! $results_file || mysql_error($link)){
echo "[$results_file]<br>\n";
echo mysql_error($link) . "<br>\n";
echo mysql_num_rows($results_file);
} else {
$sub_folder = mysql_result($results_file,0,"Username");
$disk_quota = mysql_result($results_file,0,"CustDiskQuota");
}
function mkdir_p($target)
{
if (is_dir($target)||empty($target)) return 1; // best case check
first
if (file_exists($target) && !is_dir($target)) return 0;
if (mkdir_p(substr($target,0,strrpos($target,'/'))))
return mkdir($target); // crawl back up & create dir tree
return 0;
}
$ProductPicture = str_replace(" ","",$_FILES['ProductPicture']['name']);
$uploaddir = '/export/web17/alpha/account_name/www/ABC/uploads/' .
$sub_folder;
$uploadfile = $uploaddir . "/" . $ProductPicture;
$ProductPicture = "uploads/" . $sub_folder . "/" . $ProductPicture;
mkdir_p($uploaddir);
if ($disk_quota < $_POST["MAX_FILE_SIZE"]) {
if (move_uploaded_file($_FILES['ProductPicture']['tmp_name'],
$uploadfile)) {
if (($_FILES['ProductPicture']['size'] + $disk_quota) >
$_POST["MAX_FILE_SIZE"]) {
unlink($uploaddir . $ProductPicture);
exit;
} // end copy
} elseif ($_GET["ProductPicture"] != "") { // came from preview
$ProductPicture = $_GET["ProductPicture"];
}
}
$text_to_replace = "\r\n";
$replaced_text = "<br />";
$phrase = $_POST["ProductDesc"];
$new_phrase = str_replace($text_to_replace,$replaced_text, $phrase);
// I use the following to make a folder based upon their username.
if ($_FILES['ProductPicture']['name'] == "" && $_POST["ExistingPicture"]
== "" && $_POST["ProductPicture"] == "") {
$ProductPicture = "none";
} elseif ($_POST["ExistingPicture"] != "") {
$ProductPicture = $_POST["ExistingPicture"];
$results_file = mysql_query("SELECT Username FROM TMDVendors WHERE
vid = " . $_SESSION["vid"],$link);
if(! $results_file || mysql_error($link)){
echo "[$results_file]<br>\n";
echo mysql_error($link) . "<br>\n";
echo mysql_num_rows($results_file);
} else {
$sub_folder = mysql_result($results_file,0,"Username");
}
$ProductPicture = "uploads/" . $sub_folder . "/" . $ProductPicture;
} elseif ($_POST["ProductPicture"] != "") {
$ProductPicture = $_POST["ProductPicture"];
}
}
// if preview selected redirect to preview page
// if add selected redirect to add this product page
}
The form is basically:
<form method="post" name="AddAProduct" action="AddAProduct.php"
enctype="multipart/form-data">
<input type="file" name="ProductPicture" size="12"><br />
Or use an existing Image:<br />
<select name="ExistingPicture">
<option value="" selected> </option>
<?php
$results_file = mysql_query("SELECT Username FROM MyTable WHERE vid
= " . $_SESSION["vid"],$link);
if(! $results_file || mysql_error($link)){
echo "[$results_file]<br>\n";
echo mysql_error($link) . "<br>\n";
echo mysql_num_rows($results_file);
} else {
$sub_folder = mysql_result($results_file,0,"Username");
}
$dir = '/export/web17/alpha/azuri002/www/TMD/uploads/' . $sub_folder .
'/';
if (is_dir($dir)) {
if ($dh = opendir($dir)) {
while (($filename = readdir($dh)) !== false) {
if (($filename != ".") && ($filename != "..")) {
echo "<option value=\"" . $filename . "\">" . $filename .
"</option>";
}
}
closedir($dh);
}
}
?>
</select>
...
</form>
Edit and use as needed,
Rob
More information about the thelist
mailing list