Reputation:
hi everyone i have a form html, i want upload file with this form
<body>
<div align="center">ELENCA TABELLE PRESENTI NEL DB</div>
<form action="index.php" method="post"
enctype="multipart/form-data">
<table>
<tr>
<td>
Filename:
</td>
<td>
<input type="file" name="file" id="file">
</td>
</tr>
<tr>
<td colspan="2" align="right">
<input type="submit" name="submit" value="Submit">
</td>
</tr>
</table>
</form>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/2.1.4/jquery.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/js/bootstrap.min.js" integrity="sha384-0mSbJDEHialfmuBBQP6A4Qrprq5OVfW37PRR3j5ELqxss1yVqOtnepnHVP9aJ7xS" crossorigin="anonymous"></script>
<script src="/include/js/bootstrap-contextmenu.js"></script>
<script type="text/javascript" src="/include/js/bootflat.min.js"></script>
<script type="text/javascript" src="https://cdn.datatables.net/s/bs/pdfmake-0.1.18,dt-1.10.10,af-2.1.0,b-1.1.0,b-colvis-1.1.0,b-html5-1.1.0,b-print-1.1.0,cr-1.3.0,fc-3.2.0,fh-3.1.0,kt-2.1.0,r-2.0.0,rr-1.1.0,sc-1.4.0,se-1.1.0/datatables.min.js"></script>
</body>
i have this script php for upload a file with this form, i want upload a file into my uploads root
$UploadDirectory = 'uploads/'; //Upload Directory, ends with slash & make sure folder exist
$SuccessRedirect = 'successo.html'; //Redirect to a URL after success
if (!@file_exists($UploadDirectory)) {
//destination folder does not exist
die("Make sure Upload directory exist!");
}
if($_POST)
{
if(!isset($_POST['mName']) || strlen($_POST['mName'])<1)
{
//required variables are empty
die("Title is empty!");
}
if($_FILES['mFile']['error'])
{
//File upload error encountered
die(upload_errors($_FILES['mFile']['error']));
}
$FileName = strtolower($_FILES['mFile']['name']); //uploaded file name
$FileTitle = mysql_real_escape_string($_POST['mName']); // file title
$ImageExt = substr($FileName, strrpos($FileName, '.')); //file extension
$FileType = $_FILES['mFile']['type']; //file type
$FileSize = $_FILES['mFile']["size"]; //file size
$RandNumber = rand(0, 9999999999); //Random number to make each filename unique.
$uploaded_date = date("Y-m-d H:i:s");
switch(strtolower($FileType))
{
//allowed file types
case 'image/png': //png file
case 'image/gif': //gif file
case 'image/jpeg': //jpeg file
case 'application/pdf': //PDF file
case 'application/msword': //ms word file
case 'application/vnd.ms-excel': //ms excel file
case 'application/x-zip-compressed': //zip file
case 'text/plain': //text file
case 'text/html': //html file
break;
default:
die('Unsupported File!'); //output error
}
//File Title will be used as new File name
$NewFileName = preg_replace(array('/s/', '/.[.]+/', '/[^w_.-]/'), array('_', '.', ''), strtolower($FileTitle));
$NewFileName = $NewFileName.'_'.$RandNumber.$ImageExt;
//Rename and save uploded file to destination folder.
if(move_uploaded_file($_FILES['mFile']["tmp_name"], $UploadDirectory . $NewFileName ))
{
header('Location: '.$SuccessRedirect); //redirect user after success
}else{
die('error uploading File!');
}
}
//function outputs upload error messages, http://www.php.net/manual/en/features.file-upload.errors.php#90522
function upload_errors($err_code) {
switch ($err_code) {
case UPLOAD_ERR_INI_SIZE:
return 'The uploaded file exceeds the upload_max_filesize directive in php.ini';
case UPLOAD_ERR_FORM_SIZE:
return 'The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form';
case UPLOAD_ERR_PARTIAL:
return 'The uploaded file was only partially uploaded';
case UPLOAD_ERR_NO_FILE:
return 'No file was uploaded';
case UPLOAD_ERR_NO_TMP_DIR:
return 'Missing a temporary folder';
case UPLOAD_ERR_CANT_WRITE:
return 'Failed to write file to disk';
case UPLOAD_ERR_EXTENSION:
return 'File upload stopped by extension';
default:
return 'Unknown upload error';
}
}
but the result's ever is "title is empty" with all types of file, why? i searching over the web but nothing..
Upvotes: 2
Views: 152
Reputation: 69
replace
if(!isset($_POST['mName']) || strlen($_POST['mName'])<1)
with
if(!isset($_POST['file']) || strlen($_POST['file'])<1)
Upvotes: 0
Reputation: 1523
Since the values that you are using to check is not assigned, you need to assign them. Here are the changes that you need to do in your form :
<form action="index.php" method="post" enctype="multipart/form-data">
<table>
<tr>
<td>
Filename:
</td>
<td>
<input type="file" name="mFile" id="mFile">
</td>
<td>
<input type="text" name="mName" id="mName">
</td>
</tr>
<tr>
<td colspan="2" align="right">
<input type="submit" name="submit" value="Submit">
</td>
</tr>
</table>
</form>
Upvotes: 0
Reputation: 9001
if(!isset($_POST['mName']) || strlen($_POST['mName'])<1)
You are looking for $_POST["mName"]
but there is no field with the name
attribute of "mName" in your form, like this:
<input type="text" name="mName">
Similarly:
if($_FILES['mFile']['error'])
Here you look for a file with name "mFile", but the input
in your form has the name
attribute value of "file".
Upvotes: 1