我正在尝试使用PHPExcel上传excel文件。这个过程涉及3个文件 - 的 page1.php中
<table width="100%">
<form action ="" method="post" enctype="multipart/form-data">
<input type="hidden" name="action" value="uploadexcel">
<tr>
<td width="30%">Upload Student-Enquiry File Here:</td>
<td><input type="file" name="studentfile"></td>
<td><input type="submit" name="uploadexcel" value="Upload"></td>
</tr>
</form>
</table>
使page2.php
<?php
if (!isset($_SESSION['eschools']['admin_user']) || $_SESSION['eschools']['admin_user']=="" ) {
header('location: ./?pid=1&unauth=0');
exit;
}
if ($action =="uploadexcel"){
if($uploadexcel="Upload"){
$inputFileName =$_FILES['studentfile']['tmp_name'];
$filepath=$_FILES['studentfile']['name'];
$url = "exam_excel/page3.php";
header("Location: ".$url);
}
}
?>
Page3.php 此页面实际上将Excel数据上传到MySQL表格,我需要在此处处理所选的Excel文件 -
<?php session_start();
include("../../includes/constants.inc.php"); //Database configuration File
if(isset($_FILES['studentfile']['tmp_name']))
if(isset($inputFile))
{
require_once 'Classes/PHPExcel.php';
require_once 'Classes/PHPExcel/IOFactory.php';
$inputFileName =$_FILES['studentfile']['tmp_name'];
//Read your Excel workbook
try {
$inputFileType = PHPExcel_IOFactory::identify($inputFileName);
$objReader = PHPExcel_IOFactory::createReader($inputFileType);
$objPHPExcel = $objReader->load($inputFileName);
} catch (Exception $e){
die('Error loading file "' . pathinfo($inputFileName, PATHINFO_BASENAME).'": ' . $e->getMessage());
}
// Get worksheet dimensions
$sheet = $objPHPExcel->getSheet(0);
$highestRow = $sheet->getHighestRow();
$highestColumn = $sheet->getHighestColumn();
// Loop through each row of the worksheet in turn
for ($row = 2; $row <= $highestRow; $row++)
{
// Read a row of data into an array
$temp=array("");
$rowData = $sheet->rangeToArray('A' . $row . ':' . $highestColumn . $row, NULL, TRUE, FALSE);
foreach($rowData[0] as $k=>$v)
{
array_push($temp,$v);
}
if(!empty($temp[45]) &!empty($temp[46]) )
{
$tccase="Yes";
}
else
{
$tccase="No";
}
$q="insert into es_enquiry(eq_submitedon,eq_application_no,eq_class,class_sift,eq_name,eq_sex,eq_dob,age,month,day,blood_g,scat_id,ehandi,e_ews,e_bpl,e_sgc,eq_mothername,father_name,eq_countryid,eq_emailid,office_address,office_phone,resident_phone,dist_from_kv,eq_permaddress,domicile, no_of_transfer,parent_cate_id,kv_tc_no,kv_tc_date,last_class_cgpa,documents,mother_occu,father_occu,eq_city,eq_state,eq_zip,per_city,per_state,per_zip,per_country,mid_name,last_name,tc_case,eq_from_aca,eq_to_aca,eq_tempaddress,present_country,cam_image) values('".$temp[5]."','".$temp[3]."','".$temp[4]."','".$temp[2]."','".$temp[6]."','".$temp[9]."','".$temp[10]."','".$temp[11]."','".$temp[12]."','".$temp[13]."','".$temp[14]."','".$temp[17]."','".$temp[40]."','".$temp[41]."','".$temp[42]."','".$temp[43]."','".$temp[20]."','".$temp[18]."','".$temp[15]."','".$temp[16]."','".$temp[22]."','".$temp[23]."','".$temp[29]."','".$temp[36]."','".$temp[30]."','".$temp[39]."','".$temp[38]."','".$temp[37]."','".$temp[45]."','".$temp[46]."','".$temp[44]."','".$temp[47]."','".$temp[21]."','".$temp[19]."','".$temp[25]."','".$temp[26]."','".$temp[28]."','".$temp[31]."','".$temp[32]."','".$temp[35]."','".$temp[33]."','".$temp[7]."','".$temp[8]."','".$tccase."','".$temp[49]."','".$temp[50]."','".$temp[24]."','".$temp[27]."','".$temp[8]."')";
mysql_query($q)or die(mysql_error());
unset($temp);
}
echo "Your data inserted successfully";
}
else
{
echo "Select Excel FIle";
}
?>
如果直接使用Page1.php中的Page3.php使用Action =“Page3.php”工作正常,但我不能在没有身份验证的情况下直接访问。我尝试了各种方法来获取Page3.php上的选定文件名,但获取Temp名称。我尝试通过URL传递temp_name,如$ url =“exam_excel / page3.php?inputFile =”。$ inputFileName;并接收它$ filename = $ _ GET ['inputFile'];然后我尝试在page3.php上使用这个变量代替inputFileName但是失败了。
就此问题提出一些建议/指导
答案 0 :(得分:0)
当文件上传传递到PHP页面时,您需要立即处理该文件,方法是将其移动到更永久的存储位置或处理其内容。您无法将其传回给用户,因为无法预填<input type=file>
,并且期望用户第二次上传可能较大的文件是不合理的。如果你没有对上传的文件做任何事情,那么PHP会在请求结束时销毁它,它就消失了。