如何通过第2页将$ FILE从第1页传递到第3页

时间:2014-02-13 19:18:59

标签: php

我正在尝试使用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但是失败了。

就此问题提出一些建议/指导

1 个答案:

答案 0 :(得分:0)

当文件上传传递到PHP页面时,您需要立即处理该文件,方法是将其移动到更永久的存储位置或处理其内容。您无法将其传回给用户,因为无法预填<input type=file>,并且期望用户第二次上传可能较大的文件是不合理的。如果你没有对上传的文件做任何事情,那么PHP会在请求结束时销毁它,它就消失了。