2016-07-27 256 views
0

我试图调试2小时以来的代码,但在这里找不到问题。此代码不会上传任何文件!也没有显示任何错误。好像服务器根本没有收到文件!PHP文件上传问题。文件没有得到上传

这里是HTML部分

<form action="?" method="post" enctype="multipart/form-data" name="form1" id="form1"> 
    <label>Select file: (Max size: 2mb)</label> 
    <input type="file" name="xls_file" id="xls_file" /> <input type='hidden' value='55' name='yo' /> 
    <input type="submit" name="submit" id="submit" value="Submit" /> 
</form> 

这里是PHP的一部分

if(isset($_FILES['xls_file'])) { 
    if ($_FILES['xls_file']['error'] !== UPLOAD_ERR_OK) { 
    die("Upload failed with error code " . $_FILES['xls_file']['error']); 
    }} 

if(isset($_FILES['xls_file'])){ 
$file_name = $_FILES['xls_file']['name']; 
$allowed = array('xls','xlsx','csv'); 
$ext = pathinfo($file_name, PATHINFO_EXTENSION); 

$file_size =$_FILES['xls_file']['size']; 
$file_tmp =$_FILES['xls_file']['tmp_name']; 
$file_type=$_FILES['xls_file']['type']; 

//check for valid file 
if(!in_array($ext,$allowed)) { 
    echo "Invalid file type."; 
    exit; 
    } 

//check for file size 
if(($file_size/1000) > 2100){ 
    echo "File size greater than allowed limit. Kindly choose a small file. "; 
    exit; 
    } 

move_uploaded_file($file_tmp,"./".str_replace(array('"',"'","\\","=","<",">","`",";"), '', $file_name)); 
$uploaded = true; 
} 

这里是完整的代码

<?php 
$G_POST = str_replace(array('"',"'","\\","=","<",">","`",";"), '', $_POST); 
$G_GET = str_replace(array('"',"'","\\","=","<",">","`",";"), '', $_GET); 


if($G_POST[filename]) 
     $uploaded = true; 

    if(isset($_FILES['xls_file'])) { 
    if ($_FILES['xls_file']['error'] !== UPLOAD_ERR_OK) { 
    die("Upload failed with error code " . $_FILES['xls_file']['error']); 
    }} 

    if(isset($_FILES['xls_file'])){ 
    $file_name = $_FILES['xls_file']['name']; 
    $allowed = array('xls','xlsx','csv'); 
    $ext = pathinfo($file_name, PATHINFO_EXTENSION); 

    $file_size =$_FILES['xls_file']['size']; 
    $file_tmp =$_FILES['xls_file']['tmp_name']; 
    $file_type=$_FILES['xls_file']['type']; 

    //check for valid file 
    if(!in_array($ext,$allowed)) { 
     echo "Invalid file type."; 
     exit; 
     } 

    //check for file size 
    if(($file_size/1000) > 2100){ 
     echo "File size greater than allowed limit. Kindly choose a small file. "; 
     exit; 
     } 

    move_uploaded_file($file_tmp,"./".str_replace(array('"',"'","\\","=","<",">","`",";"), '', $file_name)); 
    $uploaded = true; 
    } 

?> 
<!DOCTYPE html> 
<html> 
<head> 
<title>Excel (xls,xlsx,csv) to VCF (vCard) Online Converter - The Web Vendor</title> 
<meta name="viewport" content="width=device-width, initial-scale=1"> 
<link rel="stylesheet" href="http://code.jquery.com/mobile/1.4.5/jquery.mobile-1.4.5.min.css"> 
<script src="http://code.jquery.com/jquery-1.11.3.min.js"></script> 
<script src="http://code.jquery.com/mobile/1.4.5/jquery.mobile-1.4.5.min.js"></script> 
</head> 
<body> 

<div data-role="page"> 
    <div data-role="main" class="ui-content"> 

    <?php 
    //STEP 1, ON LOAD 
    if(!$uploaded) { 
    ?> 
    <h2>Excel to VCF Converter</h2> 
<p>This is a simple, 3-step tool to convert your contact details in excel/spreadsheet to vCard (3.0) format. Supported formats are: xls, xlsx and csv.</p> 
<p>Must Watch video tutorial here: <a href="https://www.youtube.com/watch?v=sn7ROzt9YRA" target="_blank">https://www.youtube.com/watch?v=sn7ROzt9YRA</a></p> 
<hr/> 
<h3>Step 1:</h3> 
    <form action="?" method="post" enctype="multipart/form-data" name="form1" id="form1"> 
     <label>Select file: (Max size: 2mb)</label> 
     <input type="file" name="xls_file" id="xls_file" /> <input type='hidden' value='55' name='yo' /> 
     <input type="submit" name="submit" id="submit" value="Submit" /> 
    </form> 
    <?php } 
    //STEP 2, AFTER FILE UPLOAD 
    else if(!$G_POST[filename]) { 
     ?> 
     <form action="?" method="post" name="step2"> 
     <h3>Step 2:</h3> 
      <label>Uploaded file:</label> 
      <input type="text" name="filename" id="filename" readonly="readonly" value="<?php echo str_replace(array('"',"'","\\","=","<",">","`",";"), '', $file_name) ?>" /> 
      <label>Sheet no: </label> 
      <input name="sheet" type="number" required="required" id="sheet" max="9999" min="1" value="1" /> 
      <label>First Column:</label> 
      <select name="first_column" id="first_column" required > 
     <option value="A">A</option> 
     <option value="B">B</option> 
     <option value="C">C</option> 
     <option value="D">D</option> 
     <option value="E">E</option> 
     <option value="F">F</option> 
     <option value="G">G</option> 
     <option value="H">H</option> 
     <option value="I">I</option> 
     <option value="J">J</option> 
     <option value="K">K</option> 
     <option value="L">L</option> 
     <option value="M">M</option> 

     </select> 
      <label>Last Column:</label> 
      <select name="last_column" id="last_column" required > 
     <option value="A">A</option> 
     <option value="B">B</option> 
     <option value="C">C</option> 
     <option value="D">D</option> 
     <option value="E">E</option> 
     <option value="F">F</option> 
     <option value="G">G</option> 
     <option value="H">H</option> 
     <option value="I">I</option> 
     <option value="J">J</option> 
     <option value="K">K</option> 
     <option value="L">L</option> 
     <option value="M">M</option> 
     <option value="N">N</option> 
     </select> 
      <label>First Row:</label> 
      <input type="number" name="first_row" id="first_row" min="1" max="9999" required="required" /> 
      <label>Last Row:</label> 
      <input type="number" name="last_row" id="last_row" min="1" max="9999" required="required" /> 
      <input type="submit" value="Submit"> 

      </form> 
      <?php 
    } 

    ?> 

    </div> 
</div> 

</body> 
</html> 

我经历。但从未遇到过这样的问题。

+0

它抛出什么错误? –

+0

删除'action =“?”'属性中的'?' – RiggsFolly

+0

一旦PHP为您提供$ _POST和$ _GET数组,它们都是您的。创建另一个副本没有意义。清理每个输入**当然**,但不需要另一个副本 – RiggsFolly

回答

0

正如指出的@RahulPatel,事情是jquery.mobile使用Ajax在处理表单数据。文件不能提交与Ajax。所以我们需要告诉j.mobile关闭这个表单的Ajax。所以,我们需要添加下面的表单定义

data-ajax="false" 

等代码将

<form action="" method="post" enctype="multipart/form-data" name="form1" id="form1" data-ajax="false"> 

感谢https://forum.jquery.com/topic/file-upload-in-jquery-mobile

+0

它现在完美。谢谢大家。 –