I have a PHP form that is inserting information into a database. It all works except for the file upload. The filename needs to get placed inside the "image" column in the database table and the file needs to be put in the directory as well. Funny thing is that this uploader was working yesterday. :-S
Please can someone just review my PHP code and see if i am missing something?? Thanks so much!!
FORM CODE:
<form name="upload_announcement" method="post" action="PostAnnouncement.php">
Title: (limit 35 characters)<br />
<input type="text" name="title" maxlength="32" style="width:200px;" /><br /><br />
Message: (limit 500 html characters)<br />
<textarea name="message" cols="60" rows="20"></textarea><br /><br />
Upload Image: (Specs: .jpg format, 255px X 255px, and less than 500kb in size.)<br />
<input type="file" name="image" id="image" style="color:#fff;" />
<br /><br />
Start Date:<br />
<input name="dateStart" type="text" id="dateStartImg" />
<br /><br />
End Date:<br />
<input name="dateEnd" type="text" id="dateEndImg" />
<br /><br />
<input type="hidden" name="customerId" value="<?php echo $_COOKIE['customerId']; ?>" />
<input type="submit" name="upload" value="Upload Announcement" />
</form>`
SUBMIT CODE:<br />
`include('ConfigRead.php');
$customerId = $_COOKIE['customerId'];
$select = mysql_query('select filingName from user where customerId = '.$customerId.' limit 1') or die('Error: ' . mysql_error());
$selectRow = mysql_fetch_array( $select );
$filingName = $selectRow['filingName'];
$imageFileName = $_FILES['image']['name'];
if((($_FILES["image"]["type"] == "image/gif")
|| ($_FILES["image"]["type"] == "image/jpeg")
|| ($_FILES["image"]["type"] == "image/pjpeg"))
&& ($_FILES["image"]["size"] < 500000))
{
if($_FILES["image"]["error"] > 0){
header("location:Announcements.php?file=error");
}else{
move_uploaded_file($_FILES["image"]["tmp_name"],
"../Admin/CustomerFiles/Announcements/" . $filingName . "/" . $imageFileName);
}
}else{
header("location:Announcements.php?file=error");
}
$sql="INSERT INTO announcements (customerId, filingName, title, message, image, dateStart, dateEnd) VALUES ('$_POST[customerId]','$filingName','$_POST[title]','$_POST[message]','$imageFileName','$_POST[dateStart]','$_POST[dateEnd]')";
if (!mysql_query($sql,$connRead))
{
die('Error: ' . mysql_error());
}
include('CloseConnRead.php');
header("location:ManageAnnouncements.php?add=success");`
Add the multipart/form-data enctype to your form when uploading files
<form name="upload_announcement" method="post" enctype="multipart/form-data" action="PostAnnouncement.php">
Do you have file_uploads enabled in your php.ini (or using ini_set)? Is the filesize larger than the upload_max_filesize configuration option in php.ini?
Look into these others, too:
max_input_time
memory_limit
max_execution_time
post_max_size
Related
Ok I am new to mysql and php array system. I need this to work with my simple file script I have made. Below is the code like I said it works find. But I can not figure out how to add the extra inputs...
if(isset($_FILES["file"])) {
if ($_FILES["file"]["error"] > 0) {
// Error
$up = 0;
} else {
$name = $_FILES["file"]["name"];
move_uploaded_file($_FILES["file"]["tmp_name"], UPLOADS."/$name");
$up = 1;
}
header('Location: upload.php?upload='.$up);
}
if(!$steam->isLoggedin()) {
echo "Sorry Guest, You need to login with steam to upload! <br /> \n \n";
} else {
// Check our return status to see if it worked or not
if(isset($_GET['upload'])) {
if($_GET['upload'] == 1) {
echo 'Uploaded succesfully';
} else {
echo 'Upload failed';
}
}
}
<form action="upload.php" method="post" enctype="multipart/form-data" name="form1" id="form1">
<h1>Upload A ScreenShot</h1>
<em>Photo Name:</em><input name="name" type="text" id="name" />
<br />
<em>Size:</em><input name="size" type="text" id="size" />
<br />
<em>Category</em>
<select id="category" name="category">
<option>ScreenShots</option>
</select>
<br />
<em>Upload</em>:<input type="file" name="file" />
<br />
<input type="submit" name="Submit" value="Submit" />
</form>
The upload part works. But what I can not do is figure out how to add Size, Description and Category to the php code. I just do not know how to
set that part up and I do not know were to place the code. If anyone could help me I would really apricate it :).
$name = isset($_POST['name']); just returns true what you want to do with this line:
$filename = $name."_"."$type"."_".$rand."_".$_FILES['file']['name'];
and don't forget about enctype= multipart/form-data in html whithout it you could not save your file
I am trying to upload multiple images to a folder using PHP using this tutorial I managed:
In the PHP form
<?php
$success = 0;
$fail = 0;
$uploaddir = 'uploads/';
for ($i=0;$i<4;$i++)
{
if($_FILES['userfile']['name'][$i])
{
$uploadfile = $uploaddir . basename($_FILES['userfile']['name'][$i]);
$ext = strtolower(substr($uploadfile,strlen($uploadfile)-3,3));
if (preg_match("/(jpg|gif|png|bmp)/",$ext))
{
if (move_uploaded_file($_FILES['userfile']['tmp_name'][$i], $uploadfile))
{
$success++;
}
else
{
echo "Error Uploading the file. Retry after sometime.\n";
$fail++;
}
}
else
{
$fail++;
}
}
}
echo "<br> Number of files Uploaded:".$success;
echo "<br> Number of files Failed:".$fail;
?>
In the HTML form
<form enctype="multipart/form-data" action="upload.php" method="post">
Image1: <input name="userfile[]" type="file" /><br />
Image2: <input name="userfile[]" type="file" /><br />
Image3: <input name="userfile[]" type="file" /><br />
Image4: <input name="userfile[]" type="file" /><br />
<input type="submit" value="Upload" />
</form>
As you can see in the HTML form the input name is userfile[] for all of them. Now in my HTML for the input names are as follows: picture01, picture02, picture 03, etc...
How can I modify the PHP code to have my input names {: picture01, picture02, picture 03} rather than userfile[].
Thanks.
UPDATE
I want the above to fit in my HTML Form
<form enctype="multipart/form-data" action="upload.php" method="post">
Picture 01<input id="picture01" name="picture01" type="file" ><br />
Picture 02<input id="picture02" name="picture02" type="file" ><br />
Picture 03<input id="picture03" name="picture03" type="file" ><br />
Picture 04<input id="picture04" name="picture04" type="file" ><br />
<input type="submit" value="Upload" />
</form>
This code is working locally. It uses a combination of your code and the example from php.net. You should probably use pathinfo to get the extension but that's a minor detail.
form.html
<form enctype="multipart/form-data" action="upload.php" method="post">
Image1: <input name="userfile[]" type="file" /><br />
Image2: <input name="userfile[]" type="file" /><br />
Image3: <input name="userfile[]" type="file" /><br />
Image4: <input name="userfile[]" type="file" /><br />
<input type="submit" value="Upload" />
</form>
upload.php:
<?php
error_reporting(E_ALL);
ini_set("display_errors",1);
$success = 0;
$fail = 0;
$uploads_dir = 'uploads';
$count = 1;
foreach ($_FILES["userfile"]["error"] as $key => $error) {
if ($error == UPLOAD_ERR_OK) {
$tmp_name = $_FILES["userfile"]["tmp_name"][$key];
$name = $_FILES["userfile"]["name"][$key];
$uploadfile = "$uploads_dir/$name";
$ext = strtolower(substr($uploadfile,strlen($uploadfile)-3,3));
if (preg_match("/(jpg|gif|png|bmp)/",$ext)){
$newfile = "$uploads_dir/picture".str_pad($count++,2,'0',STR_PAD_LEFT).".".$ext;
if(move_uploaded_file($tmp_name, $newfile)){
$success++;
}else{
echo "Couldn't move file: Error Uploading the file. Retry after sometime.\n";
$fail++;
}
}else{
echo "Invalid Extension.\n";
$fail++;
}
}
}
echo "<br> Number of files Uploaded:".$success;
echo "<br> Number of files Failed:".$fail;
When you have change the names in the form, change the name when you try to get an array element of the file
ex.
echo $_FILES["picture$i"]['name'];
and change the for as this
for ($i=1;$i<=4;$i++)
I have file upload and input fields in my form..I want to hide or disable submit button for the file upload if the file is uploaded successfully...I'm really confused on how to show the error message on the same page and proceed to the 'Thank you' page if there is no error. I'm validating the file upload using php. Any Idea on how to disable submit button if the file upload succeed? or show me how to process the file upload and input fields together while showing the error message on same page for file upload...
Note I want the submit button for file upload to disappear only if the file is successfully uploaded not when the user hits submit.
<html>
<head>
</head>
<body>
<form action="" method="post" enctype="multipart/form-data">
<label for="file">Choose Photo:</label>
<input type="file" name="file" onchange="file_selected = true;">
<input type="hidden" name="submited" value="true" />
<input type="submit" name="submit" value="Submit" >
</form>
<form action="Send.php" method="post">
First Name:<input type="text" name="fname" required><br>
Last Name:<input type="text" name="lname" required><br>
Choose Username:<input type="text" name="username" required><br>
Age:<input type="text" name="age" required><br>
<input type="submit" value="Submit" name="submit">
</form>
</body>
</html>
Here is the php code which processes the file upload...I have two submit buttons one for the file upload and one for the other input fields..This php code is present on the same page with html form.
<?php
ini_set( "display_errors", 0);
if(isset($_REQUEST['submited'])) {
// your save code goes here
$allowedExts = array("jpg", "jpeg", "gif", "png");
$extension = end(explode(".", $_FILES["file"]["name"]));
if ((($_FILES["file"]["type"] == "image/gif")
|| ($_FILES["file"]["type"] == "image/jpeg")
|| ($_FILES["file"]["type"] == "image/png")
|| ($_FILES["file"]["type"] == "image/pjpeg"))
&& ($_FILES["file"]["size"] < 2097152)
&& in_array($extension, $allowedExts))
{
if ($_FILES["file"]["error"] > 0)
{
echo "Return Code: " . $_FILES["file"]["error"] . "<br>";
}
else
{
echo "";
if (file_exists("images/" . $_FILES["file"]["name"]))
{
echo "<font color='red'><b>We are sorry, the file you trying to upload already exists.</b></font>";
}
else
{
move_uploaded_file($_FILES["file"]["tmp_name"],
"images/" . $_FILES["file"]["name"]);
echo "<font color='green'><b> Success! Your photo has been uploaded.</b></font>";
}
}
}
else
{
echo "<font color='red'><b>We are sorry, the file you trying to upload is not an image or it exceeds 2MB in size.</b></font><br><font color='blue'><i>Only images under size of 2MB are allowed</i></font>.";
}
}
?>
I would use a Jquery AJAX call to send the data to the PHP script. Then retrieve a boolean value from the response to determine whether the button should be visible or not.
You can do it in a simple way such as.
<html>
<head>
</head>
<body>
<?php
$sub=0;
ini_set( "display_errors", 0);
if(isset($_REQUEST['submited'])) {
// your save code goes here
$allowedExts = array("jpg", "jpeg", "gif", "png");
$extension = end(explode(".", $_FILES["file"]["name"]));
if ((($_FILES["file"]["type"] == "image/gif")
|| ($_FILES["file"]["type"] == "image/jpeg")
|| ($_FILES["file"]["type"] == "image/png")
|| ($_FILES["file"]["type"] == "image/pjpeg"))
&& ($_FILES["file"]["size"] < 2097152)
&& in_array($extension, $allowedExts))
{
if ($_FILES["file"]["error"] > 0)
{
echo "Return Code: " . $_FILES["file"]["error"] . "<br>";
}
else
{
echo "";
if (file_exists("images/" . $_FILES["file"]["name"]))
{
echo "<font color='red'><b>We are sorry, the file you trying to upload already exists.</b></font>";
}
else
{
move_uploaded_file($_FILES["file"]["tmp_name"],
"images/" . $_FILES["file"]["name"]);
$sub= 1;
echo "<font color='green'><b> Success! Your photo has been uploaded.</b></font>";
}
}
}
else
{
echo "<font color='red'><b>We are sorry, the file you trying to upload is not an image or it exceeds 2MB in size.</b></font><br><font color='blue'><i>Only images under size of 2MB are allowed</i></font>.";
}
}
?>
<form action="" method="post" enctype="multipart/form-data">
<label for="file">Choose Photo:</label>
<input type="file" name="file" onchange="file_selected = true;">
<input type="hidden" name="submited" value="true" />
<input type="submit" name="submit" value="Submit" >
</form>
<form action="Send.php" method="post">
First Name:<input type="text" name="fname" required><br>
Last Name:<input type="text" name="lname" required><br>
Choose Username:<input type="text" name="username" required><br>
Age:<input type="text" name="age" required><br>
<?php
if($sub==0)
{
?>
<input type="submit" value="Submit" name="submit">
<?php
}
?>
</form>
</body>
</html>
I assume your code is correct. I initialised a variable $sub=0 in begining. If succesfully uploaded it is set to 1.
End, If $sub is not equal to zero, the submit is not showed.
So, if file is uploaded succesfully. The button wont show.
<form action="**somepage.php**" method="post" enctype="multipart/form-data">
<label for="file">Choose Photo:</label>
<input type="file" name="file" onchange="file_selected = true;">
<input type="hidden" name="submited" value="true" />
<input type="submit" name="submit" value="Submit" >
</form>
and from there pass variables which indicates different status back to the main page and based on the variables show the error messages.
if you really need to disable the input type file save the variables in a hidden input and getting the values on page load using Jquery and disable the input type file ....
without jquery its simple just give a condiction before the input type form
if($_GET['status']=successful)
{
<input type=file readonly="readonly" />
}
else
{
<input type=file />
}
I am trying to upload multiple files to my server. If I try to upload a single file, it works fine. but if I try more than one, it gives me an error code 4, even though it does print the name of all the files correctly. Nothing is uploaded. I have the input type set correctly. Can someone help me?
Choose Image: <input name="uploadedfile[]" type="file" multiple="true"/><br /><br /><br />
<input type="submit" value="Upload Image!" style="margin-left:100px;"/>
Below is the code:
$i=0;
foreach($_FILES['uploadedfile']['name'] as $f)
{
$file['name'] = $_FILES['uploadedfile']['name'][$i];
$file['type'] = $_FILES['uploadedfile']['type'][$i];
$file['tmp_name'] = $_FILES['uploadedfile']['tmp_name'][$i];
$file['error'] = $_FILES['uploadedfile']['error'][$i];
$file['size'] = $_FILES['uploadedfile']['size'][$i];
if ($file["error"] > 0)
{
echo "Error Code: " . $file["error"];
}
$target_path = "uploads/".basename($file["name"]);
if(move_uploaded_file($file["tmp_name"], $target_path))
{
echo basename($file['name'])."<br />";
echo basename($file['tmp_name'])."<br />";
echo $target_path;
} else{
echo "There was an error uploading the file, please try again!";
}
$i++;
}
and my HTML form
<div id="album_slider">
<div style="text-align:center;margin:20px auto;font-size:27px;">Upload Image</div>
<br style="clear:both;font-size:0;line-height:0;height:0;"/>
<div style="width:700px;margin:auto;height:250px;text-align:left;">
<form enctype="multipart/form-data" action="uploader.php" method="POST" name="form">
Image Name: <input type="text" name="image_name" id="image_name"/><br /><br /><br />
<input type="hidden" name="a_id" id="a_id" value="<?php echo $a_id; ?>"/>
Choose Image: <input name="uploadedfile[]" type="file" multiple="true"/><br /><br /><br />
<input type="submit" value="Upload Image!" style="margin-left:100px;"/>
</form>
</div>
<br style="clear:both;font-size:0;line-height:0;height:1px;"/>
</div>
Try:
foreach ($_FILES["uploadedfile"]["error"] as $key => $error) {
if ($error == UPLOAD_ERR_OK) {
echo "$error_codes[$error]";
move_uploaded_file(
$_FILES["uploadedfile"]["tmp_name"][$key],
$target_path
) or die("Problems with upload");
}
}
Well its going to fail as you want to upload MULTIPLE files, but your code is only designed to handle 1 single file.
Go ahead and read through how to handle multiple files here:
http://php.net/manual/en/features.file-upload.multiple.php
Use the condition check like below code
if(isset($_FILES["qImage"]) && !empty($_FILES["qImage"]["name"])){
$imgSubQuestion = $_FILES["qImage"];
}
if(isset($_FILES["sImage"]) && !empty($_FILES["sImage"]["name"])){
$imgSolution = $_FILES["sImage"];
}
Trying to build a admin panel for uploading text and images here is the html page. The Html page is working fine it's the php page that is broken the html is just here for reference.
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<title>Administartor Panel</title>
<head>
<link rel="stylesheet" type="text/css" href="admin.css" />
</head>
<body>
<h1>Heritage House Administartor Panel</h1>
<br/>
<h2>
Event One
Event Two
Event Three
Event Four
Event Five
Event Six
</h2>
<br/>
<table>
<tr>
<td id="eone">
<br/>
<p>Event One</P>
<p> Please name the picture file1 before uploading.</p>
<form action="upload.php" method="post"
enctype="multipart/form-data">
<label for="file">Filename:</label>
<input type="file" name="afile" id="afile" />
<br />
<input type="submit" name="submit" value="submit" />
</form>
<form action="WriteTxt1.php" method="post"
enctype="multipart/form-data">
<label for="file">Input Text for artical One:</label>
<textarea rows="25" cols="100" name="content">
</textarea>
<br />
<input type="submit" name="submit" value="Save" />
</form>
</td>
</tr>
<tr>
<td id="etwo">
<p >Event Two</P>
<p> Please name the picture file2 before uploading.</p>
<form action="upload.php" method="post"
enctype="multipart/form-data">
<label for="file">Filename:</label>
<input type="file" name="bfile" id="bfile" />
<br />
<input type="submit" name="submit" value="submit" />
</form>
<form action="WriteTxt2.php" method="post"
enctype="multipart/form-data">
<label for="file">Input Text for artical Two:</label>
<textarea rows="25" cols="100" name="content">
</textarea>
<br />
<input type="submit" name="submit" value="Save" />
</form>
</td>
</tr>
<tr>
<td id="ethree" >
<p >Event Three</P>
<p> Please name the picture file3 before uploading.</p>
<form action="upload.php" method="post"
enctype="multipart/form-data">
<label for="file">Filename:</label>
<input type="file" name="cfile" id="cfile" />
<br />
<input type="submit" name="submit" value="submit" />
</form>
<form action="WriteTxt3.php" method="post"
enctype="multipart/form-data">
<label for="file">Input Text for artical Three:</label>
<textarea rows="25" cols="100" name="content">
</textarea>
<br />
<input type="submit" name="submit" value="Save" />
</form>
</td>
</tr>
<tr>
<td id="efour" >
<p >Event Four</P>
<p> Please name the picture file4 before uploading.</p>
<form action="upload.php" method="post"
enctype="multipart/form-data">
<label for="file">Filename:</label>
<input type="file" name="dfile" id="dfile" />
<br />
<input type="submit" name="submit" value="submit" />
</form>
<form action="WriteTxt4.php" method="post"
enctype="multipart/form-data">
<label for="file">Input Text for artical Four:</label>
<textarea rows="25" cols="100" name="content">
</textarea>
<br />
<input type="submit" name="submit" value="Save" />
</form>
</td>
</tr>
<tr>
<td id="efive" >
<p >Event Five</P>
<p> Please name the picture file5 before uploading.</p>
<form action="upload.php" method="post"
enctype="multipart/form-data">
<label for="file">Filename:</label>
<input type="file" name="efile" id="efile" />
<br />
<input type="submit" name="submit" value="submit" />
</form>
<form action="WriteTxt5.php" method="post"
enctype="multipart/form-data">
<label for="file">Input Text for artical Five:</label>
<textarea rows="25" cols="100" name="content">
</textarea>
<br />
<input type="submit" name="submit" value="Save" />
</form>
</td>
</tr>
<tr>
<td id="esix" >
<p >Event Six</P>
<p> Please name the picture file6 before uploading.</p>
<form action="upload.php" method="post"
enctype="multipart/form-data">
<label for="file">Filename:</label>
<input type="file" name="ffile" id="file6" />
<br />
<input type="submit" name="submit" value="submit" />
</form>
<form action="WriteTxt6.php" method="post"
enctype="multipart/form-data">
<label for="file">Input Text for artical Six:</label>
<textarea rows="25" cols="100" name="content">
</textarea>
<br />
<input type="submit" name="submit" value="Save" />
</form>
</td>
</tr>
</body>
</html>
trying to rename the files uploaded based on which form they come from on the html page afile,bfile etc.
I have tried this php file a number of different ways. I can get it to work when I eliminate the large IF statement and make 6 separate files for uploading but I was hoping to make it one file
This is what I believe makes it fail moving the global variables in to normal vars?
<?php
//This function separates the extension from the rest of the file name and returns it
function findexts ($filename)
{
$filename = strtolower($filename) ;
$exts = split("[/\\.]", $filename) ;
$n = count($exts)-1;
$exts = $exts[$n];
return $exts;
}
//This if statement assigns the new file name to a variable and displays a message.
if (file_exists($_FILES["afile"]["tmp_name"]))
{
$new = "file1.";
$type = $_FILES ["afile"] ["type"];
$size = $_FILES ["afile"] ["size"];
$error = $_FILES ["afile"] ["error"];
$name = $_FILES ["afile"] ["name"];
$tmpname = $_FILES["afile"]["tmp_name"];
$names = "afile";
echo "file1 Uploaded <br />";
}
elseif (file_exists($_FILES["bfile"]["tmp_name"]))
{
$new = "file2.";
$type = $_FILES ["bfile"] ["type"];
$size = $_FILES ["bfile"] ["size"];
$error = $_FILES ["bfile"] ["error"];
$name = $_FILES ["bfile"] ["name"];
$tmpname = $_FILES["bfile"]["tmp_name"];
$names = "bfile";
echo "file2 Uploaded <br />";
}
elseif (file_exists($_FILES["cfile"]["tmp_name"]))
{
$new = "file3.";
$type = $_FILES ["cfile"] ["type"];
$size = $_FILES ["cfile"] ["size"];
$error = $_FILES ["cfile"] ["error"];
$name = $_FILES ["cfile"] ["name"];
$tmpname = $_FILES["cfile"]["tmp_name"];
$names = "cfile";
echo "file3 Uploaded <br />";
}
elseif (file_exists($_FILES["dfile"]["tmp_name"]))
{
$new = "file4.";
$type = $_FILES ["dfile"] ["type"];
$size = $_FILES ["dfile"] ["size"];
$error = $_FILES ["dfile"] ["error"];
$name = $_FILES ["dfile"] ["name"];
$tmpname = $_FILES["dfile"]["tmp_name"];
$names = "dfile";
echo "file4 Uploaded <br />";
}
elseif (file_exists($_FILES["efile"]["tmp_name"]))
{
$new = "file5.";
$type = $_FILES ["efile"] ["type"];
$size = $_FILES ["efile"] ["size"];
$error = $_FILES ["efile"] ["error"];
$name = $_FILES ["efile"] ["name"];
$tmpname = $_FILES["efile"]["tmp_name"];
$names = "efile";
echo "file5 Uploaded <br />";
}
elseif (file_exists($_FILES["ffile"]["tmp_name"]))
{
$new = "file6.";
$type = $_FILES ["ffile"] ["type"];
$size = $_FILES ["ffile"] ["size"];
$error = $_FILES ["ffile"] ["error"];
$name = $_FILES ["ffile"] ["name"];
$tmpname = $_FILES["ffile"]["tmp_name"];
$names = "ffile";
echo "file6 Uploaded <br />";
}
//This applies the function to our file
$ext = findexts ($_FILES ['$names'] ['name']) ;
//This assigns the subdirectory you want to save into.
$targett = "forms/upload/";
//This combines the directory, the new file name, and the extension
$target = $targett . $new.$ext;
// makes sure image meets specs
if ((($type == "image/gif")
|| ($type == "image/jpeg")
|| ($type == "image/pjpeg"))
&& ($size < 2000000))
{
if ( $error > 0)
{
echo "Return Code: " . $error . "<br />";
}
else
{
echo "Thank You! <br />";
}
//saves uploaded file
if (file_exists("forms/upload/" . $name))
{
move_uploaded_file( $tmpname, $target);
echo $name . " Old File Over Written. ";
}
else
{
move_uploaded_file( $tmpname, $target);
echo "Stored in: " . "forms/upload/" . $name;
}
?>
Maybe is my elseif statement broken?
I have only been playing with this php stuff for about a week so if I'm way off mark here sorry for wasting your time.
Maybe if I try making 6 functions with the globals move_uploaded_file($_FILES["file"]["tmp_name"], $target); than placeing them in the elseif statement it could work?
this is a copy of the working php page
<?php
//This function separates the extension from the rest of the file name and returns it
function findexts ($filename)
{
$filename = strtolower($filename) ;
$exts = split("[/\\.]", $filename) ;
$n = count($exts)-1;
$exts = $exts[$n];
return $exts;
}
//This applies the function to our file
$ext = findexts ($_FILES['afile']['name']) ;
//This line assigns a random number to a variable. You could also use a timestamp here if you prefer.
$new = "file1.";
//This assigns the subdirectory you want to save into... make sure it exists!
$targett = "forms/upload/";
//This combines the directory, the random file name, and the extension
$target = $targett . $new.$ext;
if ((($_FILES["afile"]["type"] == "image/gif")
|| ($_FILES["afile"]["type"] == "image/jpeg")
|| ($_FILES["afile"]["type"] == "image/pjpeg"))
&& ($_FILES["afile"]["size"] < 2000000))
{
if ($_FILES["afile"]["error"] > 0)
{
echo "Return Code: " . $_FILES["afile"]["error"] . "<br />";
}
else
{
echo "Upload: " . $_FILES["afile"]["name"] . "<br />";
echo "Type: " . $_FILES["afile"]["type"] . "<br />";
echo "Size: " . ($_FILES["afile"]["size"] / 1024) . " Kb<br />";
echo "Temp file: " . $_FILES["afile"]["tmp_name"] . "<br />";
if (file_exists("forms/upload/" . $_FILES["file"]["name"]))
{
echo $_FILES["afile"]["name"] . " already exists. ";
}
else
{
move_uploaded_file($_FILES["afile"]["tmp_name"], $target);
echo "Stored in: " . "forms/upload/" . $_FILES["afile"]["name"];
}
else
{
echo "Invalid file";
}
That is a heck of a lot of repeated code! Do you really need 6 separate HTML forms? Why not have one form, with a dropdown for choosing the event?
<select name="event">
<option value="afile">Event One</option>
<option value="bfile">Event Two</option>
...etc
</select>
For the input, use:
<input type="file" name="userfile" id="file" />
Then instead of your lengthy if/else clauses, simply do something like this:
if ( isset($_POST['event']) && file_exists($_FILES['userfile']['tmp_name']) )
{
// base this code on the value of $_POST['event']
}
Maybe you should use
isset($_FILES["afile"])
instead of
file_exists($_FILES["afile"]["tmp_name"])
--edit
to answer your question in the title: it is possible, if, e.g $_FILES["afile"], is set. That way you'll have an array in your new variable.
Very close to working actually.
//Uses $names as a key in $_FILES - no single quotes for variable expansion....
$ext = findexts($_FILES[$names]['name']);
Might I also suggest using some sort of loop instead of a big elseif with a bunch of pasted code. Two improvements used: foreach on the $_FILES array, and extract
foreach ($_FILES as $fileKey => $values)
{
// Sets $type, $size, $name, $tmp_name, $error
extract($values);
//This applies the function to our file
$ext = findexts($name) ;
//This assigns the subdirectory you want to save into.
$targett = "forms/upload/";
//This combines the directory, the new file name, and the extension
$target = $targett . $new.$ext;
// makes sure image meets specs
if ((($type == "image/gif")
|| ($type == "image/jpeg")
|| ($type == "image/pjpeg"))
&& ($size < 2000000))
{
if ($error > 0)
{
echo "Return Code: " . $error . "<br />";
}
else
{
echo "Thank You! <br />";
}
//saves uploaded file
if (file_exists("forms/upload/" . $name))
{
move_uploaded_file( $tmp_name, $target);
echo $name . " Old File Over Written. ";
}
else
{
move_uploaded_file( $tmp_name, $target);
echo "Stored in: " . "forms/upload/" . $name;
}
}
}
I just wanted to thank everyone who left answers to my questions I was quite amazed at the short response time to my question. After trying and testing your answers I was still coming up short of any type of real solution to my problem it wasn't till I discovered that I forgot to end a if statement that I started making progress towards a answer.
if ((($type == "image/gif")
|| ($type == "image/jpeg")
|| ($type == "image/pjpeg"))
&& ($size < 2000000))
{
Now that this if statement has a ending and I have had time to study all of your answers I'm sure I will have this page working to my liking in no time.
It's working now but their are still refinements to be made. Here is my working html and php pages.
HTML
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<!--
html admin page for HH
-->
<title>Administartor Panel</title>
<head>
<link rel="stylesheet" type="text/css" href="admin.css" />
</head>
<body>
<h1>Heritage House Administartor Panel</h1>
<br/>
<table>
<tr>
<td id="eone">
<br/>
<p>Event Uploader</P>
<form action="formupload.php" method="post"
enctype="multipart/form-data">
<label for="selection">Please select the event you would like to edit.</label>
<select name="selection">
<option value="file1">Event1</option>
<option value="file2">Event2</option>
<option value="file3">Event3</option>
<option value="file4">Event4</option>
<option value="file5">Event5</option>
<option value="file6">Event6</option>
</select>
<br />
<p> Please upload your event picture file here.</p>
<p align="center">
<label for="file">Photo:</label>
<input type="file" name="file" id="file" />
<input type="submit" name="submit" value="Upload" />
</p>
</form>
<form action="WriteTxt1.php" method="post"
enctype="multipart/form-data">
<label for="file">Input Text for the event artical:</label>
<textarea rows="25" cols="100" name="content">
</textarea>
<br />
<input type="submit" name="submit" value="Save" />
</form>
</td>
</tr>
</form>
</td>
</tr>
</body>
</html>
PHP
//This function separates the extension from the rest of the file name and returns it
function findexts ($filename)
{
$filename = strtolower($filename) ;
$exts = split("[/\\.]", $filename) ;
$n = count($exts)-1;
$exts = $exts[$n];
return $exts;
}
//This if statement assigns the new file name to a variable from the value of the options menu in the html form selection.
$new = $_POST ["selection"] . ".";
//This applies the function to our file
$ext = findexts ($_FILES ["file"] ["name"]) ;
//This assigns the subdirectory you want to save into.
$targett = "forms/upload/";
//This combines the directory, the new file name, and the extension
$target = $targett . $new.$ext;
// makes sure image meets specs
if ((($_FILES ["file"] ["type"] == "image/gif")
|| ($_FILES ["file"] ["type"] == "image/jpeg")
|| ($_FILES ["file"] ["type"] == "image/pjpeg"))
&& ($_FILES ["file"] ["size"]< 2000000))
{
echo "file check pass<br />";
}
//makes an error if file does not meet standards
if ( $_FILES ["file"] ["error"] > 0)
{
echo "Return Code: " . $_FILES ["file"] ["error"] . "<br />";
}
else
{
echo "Thank You! <br />";
}
//saves uploaded file
if (file_exists("forms/upload/" . $_FILES ["file"] ["name"]))
{
move_uploaded_file( $_FILES ["file"]["tmp_name"], $target);
echo $_FILES ["file"] ["name"] . " Old File Over Written. ";
}
else
{
move_uploaded_file( $_FILES["file"]["tmp_name"], $target);
echo "Stored in: " . "forms/upload/" . $_FILES ["file"] ["name"];
}
?>
<html>
<!--
html to return user to admin page
-->
<title>
Upload Result
</title>
<head>
<p>
<br />
Back To Admin Page
</p>
</head>
<body>
<form action="">
<a href="adminarea.html">
<input type="button" value="Back" />
</a>
</form>
</body>
</html>
Note: I have only been using notepad2 and firefox to edit and error check my code. I'm guessing that their are better ways of debugging php out their right?