UPLOADING MULTIPLE FILES
Ok, here is a script for uploading two files. The same structure can be adopted for multiple files, repeating the blocks as they appear in the script.
Please note that this script follows the same logical structure of the single upload field one, but with some additional checking: f.e. the size error checking has to be done for both upload fields BEFORE the script starts uploading. Then it has to check again, field by field, before it starts the real upload, otherwise you could have error headers sent out and the script broken, if f.e. one of the two fields is empty.
Please note that this is NOT what i would have used: a would have used a include file to minimise scripting. However, this would exceed the capabilities of the average user, as it would require more php files to be compiled and uploaded. This way instead, it is pretty straight.
<?php
// Receiving variables
@$email = addslashes($_POST['email']);
@$upload_Name = $_FILES['upload']['name'];
@$upload_Size = $_FILES['upload']['size'];
@$upload_Temp = $_FILES['upload']['tmp_name'];
@$upload1_Name = $_FILES['upload1']['name'];
@$upload1_Size = $_FILES['upload1']['size'];
@$upload1_Temp = $_FILES['upload1']['tmp_name'];
// Validation for max file size
// Validation for the first file, if it exists. Repeat the block as many times as your upload fields.
if ($upload_Size>0)
{
if( $upload_Size >1000000)
{
//delete file
unlink($upload_Temp);
header("Location: error.html");
exit;
}
}
// Validation for the second file, if it exists. In the additional blocks, change the number 1 to 2 or 3 or ... n
if ($upload1_Size>0)
{
if( $upload1_Size >1000000)
{
//delete file
unlink($upload1_Temp);
header("Location: error.html");
exit;
}
}
// Uploading the first file, if it exists. Repeat as many times as your upload fields.
if ($upload_Size>0)
{
$uploadFile = "uploads/".$upload_Name ;
@move_uploaded_file( $upload_Temp , $uploadFile);
chmod($uploadFile, 0644);
$upload_URL = "http://www.
yourdomain.com/uploads/".$upload_Name ;
// Uploading the second file, if it exists.
if ($upload1_Size>0)
{
$uploadFile = "uploads/".$upload1_Name ;
@move_uploaded_file( $upload1_Temp , $uploadFile);
chmod($uploadFile, 0644);
$upload1_URL = "http://www.
yourdomain.com/uploads/".$upload1_Name ;
// You must change the number 1 to 2 or 3 or whatever in the additional blocks
}
//Sending Email to form owner
$mailto = "
youremail@yourdomain.com";
$mailsubj = "
Enter Your Subject Here";
$mailhead = "From: $email\n";
reset ($HTTP_POST_VARS);
$mailbody = "
Values submitted from web site form :\n";
while (list ($key, $val) = each ($HTTP_POST_VARS))
{
if ($key!="submit")
{
$mailbody .= "$key : $val\n";
}
}
$mailbody .= "File Link 1: $upload_URL\n";
// This line is to add the link to the first file. Repeat as many times as your upload fields
$mailbody .= "File Link 2: $upload1_URL\n"; //
This line is to add the link to the second file.
$mailbody .= "If any link is broken, please copy and paste it in your browser's address bar\n";
mail($mailto, $mailsubj, $mailbody, $mailhead);
// Autoresponder: if you don't want the autoresponder, delete this and the following 7 lines in Green color
if ($Copy != "")
{
$mailto = $email;
$mailsubj = "Copy of the info you Submitted";
$mailhead = "From: put your site or company name here: \n";
mail($mailto, $mailsubj, $mailbody, $mailhead);
}
header("Location:
thankyou_page.html");
?>
As always change the part s in blue to be your own details. The blocks can be repeated as many times as you want, to include as many upload fields as you want. The fields in the form should be named: upload, upload1, upload2, upload3, ...... upload(n) where n is the last field.
You can test the form
here. If you tick the small bottom check box, you will receive a copy email of the info submitted, with the file kinks, so you can check yourself how the script works.