I can't upload pdf files in php - php

Now i am trying to upload pdf files by the form in php but when i upload it, it doesn't work because function is_uploaded_file($_FILES['file']['tmp_name']) return false
How can i solve it please ??
I am using localhost and I verify php.ini
; Whether to allow HTTP file uploads.
; http://php.net/file-uploads
file_uploads = On
; Temporary directory for HTTP uploaded files (will use system default if not
; specified).
; http://php.net/upload-tmp-dir
upload_tmp_dir = "E:/wamp/tmp"
; Maximum allowed size for uploaded files.
; http://php.net/upload-max-filesize
upload_max_filesize = 50M
This is my code :
Class
<?php
require '../includes/master.inc.php';
// Kick-out users who aren't logged in as an admin
$auth->requireAdmin('../login_admin_cp.php');
if (isset($_POST['btnsubmit'])) {
$error->blank($_POST['field_name'], "field_name");
if ($error->ok()) {
$field_name = $_POST['field_name'];
if (is_uploaded_file($_FILES['file']['tmp_name'])) {
// exit;
$mypath = "upload/";
$file_name = $_FILES['file']['name'];
$tmp = $_FILES['file']['tmp_name'];
$n = $mypath . $file_name;
$t = $_FILES['file']['size'];
$filesize = round($t / 1024) . " KB";
$extintion = strchr($n, ".");
$extintion = strtolower($extintion);
$file_extintion_allow = array(".pdf");
if ($n == "") {
echo "Error in upload";
} elseif (!in_array($extintion, $file_extintion_allow)) {
echo "من فضلك ادخل المادة بطريقة صحيحة";
exit;
} else {
//rename the file when upload by query name
$quaryname = rand(11111, 99999);
$rename = "../" . $mypath . $quaryname . $extintion;
$URL = substr($rename, 10, strlen($rename));
move_uploaded_file($tmp, $rename);
if (!empty($_POST['hide'])) {
$hide = $_POST['hide'];
$db->query("insert into field (field_name,url,hide)values('$field_name','$URL','$hide')");
$sess->set_flashdata('success_msg', 'تم حفظ المادة بنجاح');
redirect("field_new.php");
} else {
$db->query("insert into field (field_name,url,hide)values('$field_name','$URL','0')");
$sess->set_flashdata('success_msg', 'تم حفظ المادة بنجاح');
redirect("field_new.php");
}
}
} else {
exit;
}
} else {
$sess->set_flashdata('error_msg', 'حقل المادة فارغ');
}
}
// View
include('views/header.php');
include('views/field_form_new.php');
include('views/footer.php');
?>
Form
<!-- Form elements -->
<div class="grid_9">
<div class="module">
<h2><span> رفع المادة</span></h2>
<div class="module-body">
<?php echo $error;?>
<form action="field_new.php" method="post" name="myform" enctype="multipart/form-data">
<p>
<label> اسم المادة</label>
<input type="text" class="input-medium" name="field_name" value="" />
</p>
<p style="font-size:14px"> رفع المادة </p>
<p>
<label> الرابط</label>
<input type="text" class="input-medium" name="link" value="<?php $link; ?>" />
</p>
أو<br/> <br/>
<p>
<input type="hidden" class="input-medium" name="MAX_FILE_SIZE" value="1000000">
<label>رفع الملف </label>
<input type="file" class="input-medium" name="file" />
</p>
<p>
<input type="checkbox" name="hide" value="1" />تفعيل المادة
</p>
<fieldset>
<input class="submit-green" type="submit" name="btnsubmit" value="اضافة" />
</fieldset>
</form>
</div> <!-- End .module-body -->
</div> <!-- End .module -->
<div style="clear:both;"></div>
</div> <!-- End .grid_6 -->

Maybe the file is to big or the destination directory is not writeable for php/apache.
Check the folder permission "E:/wamp/tmp" and try to upload a smaller file.
If a smaller file works, check these values in the php.ini file:
post_max_size
max_input_time
memory_limit

Related

how can I upload a pdf and an image in php mysql

I am trying to upload a pdf file and an image in php mysql but it seems that the move_uploaded_file function can only work with one file. I have tried to make it work with both files but it doesn't seem to me working. It moves just the images to the target folder and adds both image name and pdf name to the database but it doesn't move the pdf to target folder. This is the code. pls help
<?php
session_start();
require_once("includedfunctions.php");
include 'dbh.php';
if (isset($_POST['submit'])){
$title=$_POST['title'];
$author=$_POST['author'];
$target = "img/pic_book/";
$target2 = "img/pdf/";
$imgname = basename($_FILES["cphoto"]["name"]);
$bookname = basename($_FILES["book"]["name"]);
$newname = $target.basename($_FILES["cphoto"]["name"]);
$newname2 = $target2.basename($_FILES["book"]["name"]);
$img_type = pathinfo($newname,PATHINFO_EXTENSION);
$book_type = pathinfo($newname2,PATHINFO_EXTENSION);
if($img_type!='jpg' && $img_type!='JPG' && $img_type!='png' && $img_type!='PNG'){
$message="Please ensure you are entering an image";
}else{
if($book_type != 'pdf'){
$message="books must be uploaded in pdf format";
}else{
if(!preg_match("/^[a-zA-Z'-]+$/",$author)){
$message = "<p style='color:red'>Please enter the real name of the author; not a nickname.</p>";
}else{
if (move_uploaded_file($_FILES["cphoto"]["tmp_name"], $newname)) {
if(move_uploaded_file($_FILES["book"]["tmp_name"], $newname2));{
$sql = "INSERT INTO books (Title, Author, pathtopdf, pathtoimage) VALUES ('$title', '$author', '$bookname', '$imgname')";
$result = mysqli_query($conn, $sql);
if($result){
$message = "upload successful";
}else{
$message = "upload failed1";
}
}
}else{
$message = "upload failed";
}
}
}
}
}
else{
$message="";
$title="";
}
?>
<html>
<head>
<title>Libraria</title>
<link href="css/bootstrap.min.css" rel="stylesheet">
<link href="css/contactcss.css" rel="stylesheet">
<script src="js/respond.js"></script>
</head>
<body>
<br><br><br><br><br>
<!-- content -->
<div class="container">
<?php
echo '<p>Welcome ' . $_SESSION['name']. '</p><br>';
echo '<p>' . $message. ' </p>';
?>
<br><br>
<!--form-->
<div class="row">
<form action="admin2.php" method = "post" enctype="multipart/form-data">
<label for="Title">Title</label><br>
<input type="text" id="fname" value ="<?php echo $title; ?>" name="title" placeholder="Title of the book" required><br>
<label for="author">Author</label><br>
<input type="text" id="lname" name="author" placeholder="Author of the book" required><br>
<label for="Cover photo">Cover photo</label><br>
<input type="file" id="cphoto" name="cphoto" required><br>
<label for="book">Book</label>
<input type="file" id="book" name="book" required><br>
<button class="submit" type="submit" name="submit"><b>Upload</b></button>
</form>
</div>
</div>
</body>
</html>
Code is all correct. just check pdf size. if size is more than 4MB than it will not allowed to upload. you need to increase upload file size in php.ini file or apache config settting file.
Have a great day :)
application/pdf is the mime type for pdf not just pdf.

File upload not working properly in PHP

I have created a file upload in PHP. the max file size is 5MB. I'm trying to upload a file which is 39 MB.
The file upload is working fine for all the files which are of 5MB or less than 5MB, it is even working fine with 30 MB file and returning ERROR: MAX file size limit exceeds. But only in this case 39MB it is returning the below error.
I'm getting below error.
**action.php**
<form class="w3-container " action='file_upload.php' method='post' enctype="multipart/form-data" name="form" id="form-e" role="form">
<DIV id="file_name_div">
<label for="file_name">Enter file name: </label><br>
<input data-validation="filename" autocomplete="off" style="width:30%" class="w3-input w3-border w3-light-grey " type="text" name='file_name' id='file_name' autofocus />
<label for="Role">Enter Role: </label><br>
<input data-validation="role" style="width:30%" class="w3-input w3-border w3-light-grey " type="text" name='role' id='role' autofocus />
</DIV>
<br>
<button type="reset" class="btn btn-info btn-md w3-blue"><span class="glyphicon glyphicon-refresh"></span> Reset</button>
</form>
****file_upload.php****
<?php
session_start();
include_once 'config.php';
$message = '';
$fileName = $_POST['file_name']; //LINE NO 6
$role = $_POST['role']; #role code //LINE NO 7
$dir= "files/$role/"; #uploading file to selected role
foreach ($_FILES as $filename => $filearray) {
if (is_uploaded_file($filearray['tmp_name'])) {
$fileLogicalName = $filearray['name'];
$fileSize = (int) ($filearray['size'] / 1024);
$filePhysicalName = pathinfo("$fileLogicalName"); //Return complete file name with extension
$filePhysicalName['filename']; //The arrray of pathinfo return only file name without extension
if ($fileSize <= 5120) // 5mb/1024
{
//file upload code
}
}
}
?>
try add more size to the file limit
ini_set('memory_limit','1028M');
ini_set('upload_max_filesize','1028M');
ini_set('post_max_siz','1028M');

Upload multiple files with a php script

I've been modify this php script but it won't work, it always fail. It managed to create the folder, but it fails to move the files from the temporary folder to the right one, the function move_uploaded_file return always false. This is the code:
<?php
include 'connection.php';
include '../empty.html';
session_start();
if(isset($_FILES['filearray'])){
$name_array = $_FILES['filearray']['name'];
$tmp_name_array = $_FILES['filearray']['tmp_name'];
$type_array = $_FILES['filearray']['type'];
$size_array = $_FILES['filearray']['size'];
$error_array = $_FILES['filearray']['error'];
$titlealbum=$_POST['titoloalbum'];
$username=$_SESSION['username'];
$path="../users/".$username."/".$titlealbum."/";
echo $path;
mkdir($path,0777);
$total=count($tmp_name_array);
for($i=0; $i<$total; $i++){
$rightpath=$path.$name_array[$i];
if(move_uploaded_file($tmp_name_array[$i], $rightpath)){
echo $name_array[$i]." upload is complete<br>";
echo "upload completato";
} else {
echo "move_uploaded_file function failed for ".$name_array[$i]." into".$path."<br>";
}
}
}
else
echo "Files not found";
?>
This is the html form:
<form id="albumform" style="display:none" enctype="multipart/form-data" action="scripts/albumupload.php" multiple="multiple" method="POST">
<input type="hidden" name="MAX_FILE_SIZE" value="30000000">
Name: <input name="titoloalbum" type="text" required><br><br>
Cover: <input name="userfile" type="file">
<br><br>Select your songs:<br />
<input name="filearray[]" type="file" value="10000000" /><br />
<input name="filearray[]" type="file" value="10000000"/><br />
<input name="filearray[]" type="file" value="10000000"/><br />
<input name="filearray[]" type="file" value="10000000"/><br />
<input type="submit" value="Send files" />
</form>
I know that this form kinda sucks, but i don't like the multiple selection with a signle "input". Thanks in advice
You have error in your code :
$total=count($tmp_name_array);
change this to
$total=count($name_array);
You are using count function with wrong variable.
Also remove so many file types with same name from the form. Either name them different.
<input name="filearray[]" type="file" value="10000000"/><br />
You could use the following commented algorithm for Multiple-Files upload:
PHP
<?php
// FILENAME: albumupload.php
include 'connection.php';
include '../empty.html';
session_start();
$filesArray = isset( $_FILES['filesArray'] ) ? $_FILES['filesArray'] : null;
$titleAlbum = isset($_POST['titoloalbum']) ? isset($_POST['titoloalbum']) : null;
$arrFilesData = array();
if( $filesArray && !empty($filesArray) ){
$arrFilesKeys = array_keys($filesArray['name']);
$arrFilesNames = $filesArray['name'];
$arrFilesTypes = $filesArray['type'];
$arrFilesTmpNames = $filesArray['tmp_name'];
$arrFilesErrors = $filesArray['error'];
$arrFilesSizes = $filesArray['size'];
foreach($arrFilesKeys as $intKey=>$strKeyName){
$tempFileData = new stdClass();
$tempFileData->key = $strKeyName;
$tempFileData->name = $arrFilesNames[$strKeyName];
$tempFileData->type = $arrFilesTypes[$strKeyName];
$tempFileData->tmp_name = $arrFilesTmpNames[$strKeyName];
$tempFileData->error = $arrFilesErrors[$strKeyName];
$tempFileData->error = $arrFilesSizes[$strKeyName];
$arrFilesData[$strKeyName] = $tempFileData;
}
// UPLOAD THE FILES:
if($titleAlbum){
$username = trim($_SESSION['username']);
$path = __DIR__ . "/../users/" . $username . "/" . $titleAlbum;
//CREATE UPLOAD DIRECTORY IF IT DOESN'T ALREADY EXIST...
if(!file_exists($path)){
mkdir($path, 0777, TRUE);
}
// LOOP THROUGH THE FILES OBJECT ARRAY AND PERFORM FILE-UPLOAD
foreach($arrFilesData as $fileKey=>$objFileData){
$rightPath = $path . DIRECTORY_SEPARATOR . $objFileData->name;
if(move_uploaded_file($objFileData->tmp_name, $rightPath)){
echo $objFileData->name . " upload is complete<br>";
echo "upload completato";
} else {
echo "move_uploaded_file function failed for ". $objFileData->name ." into". $path . "<br>";
}
}
}
}
In this case, your HTML Form is expected to look like this:
HTML
<form id="albumform" style="" enctype="multipart/form-data" action="scripts/albumupload.php" method="POST">
<input type="hidden" name="MAX_FILE_SIZE" value="30000000">
Name: <input name = "titoloalbum" type="text" required><br><br>
Cover: <input name = "filesArray[userfile]" type="file">
<br><br>Select your songs:<br />
<input name="filesArray[file_1]" type="file" value="" /><br />
<input name="filesArray[file_2]" type="file" value=""/><br />
<input name="filesArray[file_3]" type="file" value=""/><br />
<input name="filesArray[file_4]" type="file" value=""/><br />
<input type="submit" value="Send files" />
</form>

PHP File Upload Not Submitting

I'm having an issue with a file upload where it's not uploading. When uploading a 7mb video the $_FILES['video']['tmp_name'] is empty and when I upload a 15mb file the form doesn't actually "submit", really just refreshes.
Here is my code to handle the submission:
if(isset($_POST['submit'])){
$blah = "".$_FILES['video']['size']."";
var_dump($blah);
if( empty($_FILES['video']) && empty($_POST['create_video']) ){
echo "<div class='alert alert-danger' role='alert'><center><strong>Missing Fields:</strong> Please choose a video or request the ##### team create a video.</center></div>";
} else {
if( empty($_FILES['video']['name']) && $_POST['create_video'] == "true" ){
$_SESSION['create_video'] = protect($_POST['create_video']);
?>
<script type="text/javascript">
window.location = "NEXT_PAGE";
</script>
<?
exit();
}else{
//if all were filled in continue
$allowedExts = array("mp4", "MP4", "m4a");
$extension = pathinfo($_FILES['video']['name'], PATHINFO_EXTENSION);
if ( ($_FILES["video"]["size"] <= 15728640) && (in_array($extension, $allowedExts)) ) {
if ($_FILES["video"]["error"] > 0){
echo "Return Code: " . $_FILES["video"]["error"] . "<br />";
}else{
//Get the height and width of our video
//$getID3 = new getID3;
//$file = $getID3->analyze($_FILES["video"]["tmp_name"]);
//$width =$file['video']['resolution_x'];
//$height = $file['video']['resolution_y'];
$img = getimagesize($_FILES['video']['tmp_name']);
$width = $img[0];
$height = $img[1];
var_dump($width); var_dump($height);
if( ($height < 719) || ($width < 1279)){
echo "<div class='alert alert-danger' role='alert'><center><strong>Invalid file dimensions</strong> Please ensure your image is the correct size.</center></div>";
} else {
$ext = findexts ($_FILES["video"]["name"]);
$ran = rand ();
$file_name = $_FILES["video"]["name"] = "".$_SESSION['uid'] ."".$ran.".".$ext."";
if (file_exists("uploads/video_ads/".$_SESSION['uid']."_" . $_FILES["video"]["name"])){
echo $_FILES["video"]["name"] . " already exists. ";
}else{
move_uploaded_file($_FILES["video"]["tmp_name"],
"uploads/video_ads/".$_SESSION['uid']."_" . $_FILES["video"]["name"]);
//Save the link of our ad
$_SESSION['video'] = "####/uploads/video_ads/".$_SESSION['uid']."_" . $_FILES["video"]["name"]."";
$_SESSION['create_video'] = protect($_POST['create_video']);
?>
<script type="text/javascript">
window.location = "NEXT_PAGE";
</script>
<?
exit();
}
}
}
} else {
echo "<div class='alert alert-danger' role='alert'><center><strong>Invalid file type</strong> Please upload a video in MP4 format.</center></div>";
}
}
}
}
Here is my actual form:
<form action="<? echo $_SERVER['PHP_SELF']; ?>" method="post" class="form-signin" role="form" enctype="multipart/form-data">
<br />
<input type="file" name="video" id="video" /><br />
<br />
<div class="row">
<div class="col-md-12">
<strong class="ad-header"
style="font-size: 150%; font-weight: bold;">Quick Tips:</strong>
</div>
</div>
<hr>
<h3 class="ad-sub-header" style="color: #559fd3; font-size: 150%;">Need
help to create engaging artwork for your brand?</h3>
<strong class="ad-header" style="font-size: 100%;">####
has the creative team to get it done for you</strong><br /> Only ##/hr -
3 revisions - Artwork is yours to keep. <br />
<br /> <input type="checkbox" name="create_video" value="true" />
I don't have an ad. Please create one. <br />
<br /> <input class="btn btn-lg btn-primary btn-block"
type="submit" name="submit" value="Continue To Step 5" />
</form>
The odds are your server does not accept uploads greater than 2M in size. You need to check phpinfo() (or php.ini if you have access to it) to see what your current limit is. If it is only 2M, or smaller than your upload size, you need to edit it to allow for bigger uploads. If you're on shared hosting you may be out of luck.
Try adjusting your php.ini with this settings:
php_value memory_limit 96M
php_value post_max_size 96M
php_value upload_max_filesize 96M
and ensure that the file_uploads setting is in On
For anyone who has this issue. I had to increase my post_max_size which was defaultly set to 8M.

PHP can I place a global variable inside a variable sample: $names = $_FILES ["dfile"];

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?

Categories