【问题标题】:PHP Read file from HTML input file [closed]PHP从HTML输入文件中读取文件[关闭]
【发布时间】:2014-10-06 05:18:01
【问题描述】:

如何在不上传文件的情况下使用 PHP 从 HTML 表单中读取 XML 文件的内容?这是我的表格:

<form action="readxml.php" method="post" enctype="multipart/form-data">
  <label for="file">Filename:</label>
  <input type="file" name="file" id="file"><br>
  <input type="submit" name="submit" value="Submit">
</form>

我想处理用户使用 SimpleXML 选择的 XML 以将其值存储在数据库中,因此我不需要实际上传文件。

谢谢!

【问题讨论】:

  • “不上传文件”是什么意思?你的意思是你只想将 xml 作为字符串传递并解析它(以获取值)?
  • 为了在服务器上解析它,您必须上传它!这没有任何意义。
  • 由于php在服务器上运行,所以必须先上传文件。
  • 我的意思是我不需要将文件保存在任何地方,我只想读取它的内容来解析它。但是,用户必须从其计算机上的任何位置选择文件。

标签: php html xml simplexml input-type-file


【解决方案1】:

如果文件实际上不在服务器上,您无法从 PHP 执行此操作。您必须上传文件,或者您可以在客户端处理它,而无需通过以下方式之一上传:

  • 使用HTML5 FileReader API,仅适用于 Chrome、FF 和 IE 10+
  • 在客户端使用 ActiveX 处理文件,除 IE 外无法使用。
  • 使用 SilverLight 在客户端处理文件。
  • 使用 ActionScript 在客户端处理文件。

不过,我建议将文件上传到临时位置并进行处理,然后将其删除。它更简单,可以在任何地方工作,就像它在服务器上一样。

这是上传文件的方法: PHP File Upload

这是删除文件的方法: PHP unlink() Function

这是读取文件的方法: PHP File Open/Read/Close

【讨论】:

  • 我非常同意“但是”部分...
  • 我明白了。您能给我一些关于如何上传、阅读和删除文件的建议吗?
  • 在我的回复中添加了用于上传、阅读和删除的链接。
  • 谢谢。现在我有另一个问题,警告:move_uploaded_file('file'): failed to open stream: Permission denied in
  • 这是权限问题,尝试将上传文件夹chmod更改为755或777
【解决方案2】:

你不能。我认为通过用javascript解析文件,即使在客户端也是不可行的。但我可能错了。 您可以将其上传到服务器上,将其存储在临时文件夹中,然后将其删除。

【讨论】:

  • 你能告诉我怎么做吗?
  • 我的回复中添加了链接。
【解决方案3】:

这是在我的 html/php 文件中...我只是将其设置为提交给自己,因为这对我来说很容易。

<?php

if (isset($_FILES['file'])) {
   $file = $_FILES['file']['tmp_name'];

   $catalog = simplexml_load_file($file); 

   echo '<table style="border-spacing: 10px;">';
   echo '<tr><th>Title</th><th>Author</th></tr>';

   foreach ($catalog->book as $b) {
      echo '<tr><td>'.$b->title.'</td><td>'.$b->author.'</td></tr>';
   } 
   echo '</table>';
}
else {
?>
<!-- change the filename below -->
<form action="filename.html" method="post" enctype="multipart/form-data">
  <label for="file">Filename:</label>
  <input type="file" name="file" id="file"><br>
  <input type="submit" name="submit" value="Submit">
</form>
<?php } ?>

这是我在文件中使用的xml,用于与表单一起上传...

<?xml version="1.0"?>
<catalog>
   <book id="bk101">
      <author>Gambardella, Matthew</author>
      <title>XML Developer's Guide</title>
      <genre>Computer</genre>
      <price>44.95</price>
      <publish_date>2000-10-01</publish_date>
      <description>An in-depth look at creating applications 
      with XML.</description>
   </book>
   <book id="bk102">
      <author>Ralls, Kim</author>
      <title>Midnight Rain</title>
      <genre>Fantasy</genre>
      <price>5.95</price>
      <publish_date>2000-12-16</publish_date>
      <description>A former architect battles corporate zombies, 
      an evil sorceress, and her own childhood to become queen 
      of the world.</description>
   </book>
   <book id="bk103">
      <author>Corets, Eva</author>
      <title>Maeve Ascendant</title>
      <genre>Fantasy</genre>
      <price>5.95</price>
      <publish_date>2000-11-17</publish_date>
      <description>After the collapse of a nanotechnology 
      society in England, the young survivors lay the 
      foundation for a new society.</description>
   </book>
</catalog> 

它只是显示上传表单或图书目录

Title                      Author
XML Developer's Guide      Gambardella, Matthew
Midnight Rain              Ralls, Kim
Maeve Ascendant            Corets, Eva

也...如下链接所述...如果您不移动或重命名临时文件,它将在 php 脚本结束时被删除。 php:: how long to tmp files stay?

【讨论】:

    猜你喜欢
    • 2018-01-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多