I am writing a code for uploading one excel file.And displaying its full content on a webpage.But whenever user clicks on the submit button it shows the error- "Your File Type is:application/vnd.openxmlformats-officedocument.spreadsheetml.sheet File type must be text(.txt) or msword(.doc)."
Below is my code.
<?php
if( isset($_POST['submit1'])) {
// $_FILES is the array auto filled when you upload a file and submit a form.
$userfile_name = $_FILES['file1']['name']; // file name
$userfile_tmp = $_FILES['file1']['tmp_name']; // actual location
$userfile_size = $_FILES['file1']['size']; // file size
$userfile_type = $_FILES['file1']['type'];
$userfile_error = $_FILES['file1']['error']; // any error!. get from here
// Content uploading.
$file_data = '';
if ( !empty($userfile_tmp))
{
$file_data=base64_encode(@fread(fopen($userfile_tmp,'r'), filesize($userfile_tmp)));
}
switch (true)
{
// Check error if any
case ($userfile_error == UPLOAD_ERR_NO_FILE):
case empty($file_data):
echo 'You must select a document to upload before you can save this page.';
exit;
break;
case ($userfile_error == UPLOAD_ERR_INI_SIZE):
case ($userfile_error == UPLOAD_ERR_FORM_SIZE):
echo 'The document you have attempted to upload is too large.';
break;
case ($userfile_error == UPLOAD_ERR_PARTIAL):
echo 'An error occured while trying to recieve the file. Please try again.';
break;
}
if( !empty($userfile_tmp))
{
// only MS office and text file is accepted.
if( !(($userfile_type=="application/msword") || ($userfile_type=="text/plain") || ($userfile_type=="application/vnd.ms-excel")) )
{echo 'Your File Type is:'. $userfile_type;
echo '<br>File type must be text(.txt) or msword(.doc).';
exit;
}
}
echo filesize($userfile_tmp);
}
?>
<HTML>
<HEAD>
<TITLE> PHP File Upload Script </TITLE>
</HEAD>
<BODY>
<form name="profile" method="POST" action="<?php echo $_SERVER['PHP_SELF'] ?>" target="_self" enctype="multipart/form-data" >
<P align ="center"><input type="hidden" name="MAX_FILE_SIZE" value="1000000">
<input name="file1" type="file" accept="application/vnd.openxmlformats- officedocument.spreadsheetml.sheet" />
<input type="submit" name="submit1" value="Submit" />
</P>
</form>
</BODY>
</HTML>
Please help . Thank you in advance.
You need to add following in your if condition as well because your are checking for application/vnd.ms-excel
and application/msword
but file is having its header different as
"application/vnd.openxmlformats-officedocument.spreadsheetml.sheetyour"
So if you add this inside if like
if(($userfile_type=="application/vnd.openxmlformats-officedocument.spreadsheetml.sheetyour") || ($userfile_type=="application/msword") || ($userfile_type=="text/plain") ||
($userfile_type=="application/vnd.ms-excel")){
// code
}
Because server will interpret the file type based on headers it receives.
If you want to show Excel file contents on your page then you should think of using PHPExcel. It is very easy to use.
Link: https://phpexcel.codeplex.com/
Examples: https://phpexcel.codeplex.com/wikipage?title=Examples&referringTitle=Home
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.