开发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文件到数据库的代码拿过来就行了,这是本书第六章讲解过的内容,同时也在博客的这个帖子中有详细介绍:开发简易在线翻译记忆库所需代码。