首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >我如何让用户上传多个文本文件,然后循环遍历它们,并在PHP中回显每个文本文件的内容?

我如何让用户上传多个文本文件,然后循环遍历它们,并在PHP中回显每个文本文件的内容?
EN

Stack Overflow用户
提问于 2014-12-05 02:27:00
回答 2查看 401关注 0票数 1

我有一个简单的HTML表单,允许用户选择多个文本文件。我想循环它们,并回音每一个。我有以下代码:

代码语言:javascript
运行
复制
Upload text document: <br/><br>
<form action="output.php" method="post" enctype="multipart/form-data">
    <input type="file" name="documents[]" size="50" multiple="multiple" />
    <br />
    <input type="submit" value="Upload File" />
</form>

然后在output.php中,当我想要回显每个文件并回显其内容时。我试过这个代码:

代码语言:javascript
运行
复制
$filenames = array();

if(isset($_FILES["documents"]))
{
   for($i=0; $_FILES['documents']['name'][$i] != '' ; $i++)
   {
       $filenames[$i] = $_FILES['documents']['name'][$i];

       $myfile = fopen("$_FILES['documents']['name'][$i]", "r") or die("Unable to open file!");

       echo fread($myfile,filesize("$_FILES['documents']['name'][$i]"));

       fclose($myfile);

    }

}

我得到以下错误:

解析错误: C:\wamp\www\php_sandbox\ValenceV1\ValenceV1_output.php中的语法错误、意外“(T_ENCAPSED_AND_WHITESPACE)、期望标识符(T_STRING)或变量(T_VARIABLE)或数字(T_NUM_STRING)

我如何修复这个代码,或者如果有更好的方法来做,请提供它。谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-12-05 02:43:08

在您的代码中,在用双引号包装的行上触发了该错误,然后用单引号包装数组索引。如果您希望在不使用move_upload_file()的情况下读取这些文件,请使用tmp_name索引来读取临时文件:

代码语言:javascript
运行
复制
<?php

$contents = '';
if(isset($_FILES['documents'])) {
    $num_of_files = count($_FILES['documents']['name']);
    for($i = 0; $i < $num_of_files; $i++) {
        $tmp = $_FILES['documents']['tmp_name'][$i];
        $contents .= file_get_contents($tmp);
    }
    echo $contents;
}

?>

如果您决定foreach的味道直接指向tmp_name

代码语言:javascript
运行
复制
$contents = '';
if(isset($_FILES['documents'])) {
    foreach($_FILES['documents']['tmp_name'] as $tmp) {
        $contents .= file_get_contents($tmp);
    }
    echo $contents;
}
票数 1
EN

Stack Overflow用户

发布于 2014-12-05 02:28:59

你为什么用双引号把瓦尔斯封起来?删除引号&可以尝试我发布的内容。

代码语言:javascript
运行
复制
$filenames = array();
if(isset($_FILES["documents"]))
{
    for($i=0; $_FILES['documents']['name'][$i] != '' ; $i++)
    {
        $filenames[$i] = $_FILES['documents']['name'][$i];
        $myfile = fopen($_FILES['documents']['name'][$i], "r") or die("Unable to open file!");
                       /*^^^*/                       /*^^^*/ 
        echo fread($myfile,filesize($_FILES['documents']['name'][$i]));
        fclose($myfile);
    }
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27307788

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档