开发TMX文件上传功能所需代码

在本书的5.2.2节中我们介绍了如何上传Excel文件,有读者就想知道TMX文件如何上传,在这个帖子中我们一起来看一下。

TMX文件上传

首先,我们将5.2.2节中的代码粘贴过来:

代码一:head.php

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    
    <title>File Upload</title>
</head>
<body>

代码二:foot.php

</body>
</html>

代码三:upload.php

<?php include "shared/head.php"; ?>   
<form action="upload_file.php" method="POST" enctype="multipart/form-data">  
    <table>    
        <tr>    
            <td>    
                <input type="file" name="file">    
            </td>    
            <td>    
                <input type="submit" name="submit" value="上传">  
            </td>    
        </tr>    
    </table>  
</form>  
<?php include "shared/foot.php"; ?>

代码四:upload_file.php

<?php  
if ($_FILES["file"]["error"] > 0)  
  {  
  echo "文件上传错误代码:".$_FILES["file"]["error"]."<br>";  
  }  
else  
  {  
  echo "上传文件为:".$_FILES["file"]["name"]."<br>";  
  echo "文件类型:".$_FILES["file"]["type"]."<br>";  
  echo "文件大小:".($_FILES["file"]["size"] / 1024)." KB<br>";  
  echo "文件临时存储在:".$_FILES["file"]["tmp_name"];  
  }  
?>  

代码五:upload_file.php

<?php  
if ($_FILES["file"]["error"] > 0)  
  {  
  echo "文件上传错误代码:".$_FILES["file"]["error"]."<br>";  
  }  
else  
  {   
  if (file_exists("upload/".$_FILES["file"]["name"]))  
      {  
      echo $_FILES["file"]["name"] . "已经存在。";  
      }  
    else  
      {  
      move_uploaded_file($_FILES["file"]["tmp_name"], "upload/" . $_FILES["file"]["name"]);  
      echo "文件已上传至以下文件夹:"."upload/".$_FILES["file"]["name"];  
      }  
  }  
?>

以上代码均来自于本书第五章,其中代码五是代码四的升级版,修改的主要内容就是将用户上传的文件放到一个指定的文件夹中。

对于初学者而言,如果就想使用上面的代码来实现TMX文件的上传是没有任何问题的,每当上传一个文件后,这个文件就会进入到upload文件夹中。

我给大家看一下我电脑上的文件夹结构:

如果你将上面的代码按照这个文件夹结构来撰写的话,就会得到一个可以正常上传TMX文件的功能。

TMX文件读取

既然能够上传TMX文件了,那么我们就也可以读取TMX文件了,读取的方法就是利用本书第六章所使用的代码:

代码七:从“.tmx”格式翻译记忆库中读取并展示数据

<?php   
    $xml = simplexml_load_file("source.tmx");  
    $json = json_encode($xml);  
    $jsondata = json_decode($json,true);  
    foreach ($jsondata["body"]["tu"] as $tu)  
        {  
            echo $tu["tuv"][0]["seg"]."<br>";  
            echo $tu["tuv"][1]["seg"]."<br>";  
            echo "<br>";  
        }     
?>  

对于初学者而言,会在这里卡住,因为不知道怎么将文件提交页面的文件名与代码七连通在一起。

要解决这个问题就要把握两个关键点:

1)代码七中的第一行:

$xml = simplexml_load_file("source.tmx"); 

在这行代码中我们使用了一个函数simplexml_load_file(),这个函数要想执行成功需要一个参数,也就是括号里的"source.tmx",这是我们要处理的文件的文件名。

2)代码四中的第七行:

echo "上传文件为:".$_FILES["file"]["name"]."<br>"; 

在这行代码中我们获得了上传文件的文件名。

因此,只要将上传文件的文件名放到simplexml_load_file()函数里就可以了。

upload_result.php文件修改如下:

代码八:upload_result.php

<?php  
if ($_FILES["file"]["error"] > 0)  
  {  
  echo "文件上传错误代码:".$_FILES["file"]["error"]."<br>";  
  }  
else  
  {   
  if (file_exists("upload/".$_FILES["file"]["name"]))  
      {  
      echo $_FILES["file"]["name"] . "已经存在。";  
      }  
    else  
      {  
      move_uploaded_file($_FILES["file"]["tmp_name"], "upload/" . $_FILES["file"]["name"]);  
      echo "文件已上传至以下文件夹:"."upload/".$_FILES["file"]["name"]."<br>";  
      
      $xml = simplexml_load_file("upload/".$_FILES["file"]["name"]);  
      $json = json_encode($xml);  
      $jsondata = json_decode($json,true);  
      foreach ($jsondata["body"]["tu"] as $tu)  
          {  
              echo $tu["tuv"][0]["seg"]."<br>";  
              echo $tu["tuv"][1]["seg"]."<br>";  
              echo "<br>";  
          }     
    
        }  
  }  
?>

这样就完成了TMX文件的上传并读取功能。接下来就可以再把如何上传TMX文件到数据库的代码拿过来就行了,这是本书第六章讲解过的内容,同时也在博客的这个帖子中有详细介绍:开发简易在线翻译记忆库所需代码