我有一个简单的HTML表单,允许用户选择多个文本文件。我想循环它们,并回音每一个。我有以下代码:
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中,当我想要回显每个文件并回显其内容时。我试过这个代码:
$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)
我如何修复这个代码,或者如果有更好的方法来做,请提供它。谢谢。
发布于 2014-12-05 02:43:08
在您的代码中,在用双引号包装的行上触发了该错误,然后用单引号包装数组索引。如果您希望在不使用move_upload_file()的情况下读取这些文件,请使用tmp_name索引来读取临时文件:
<?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
$contents = '';
if(isset($_FILES['documents'])) {
foreach($_FILES['documents']['tmp_name'] as $tmp) {
$contents .= file_get_contents($tmp);
}
echo $contents;
}发布于 2014-12-05 02:28:59
你为什么用双引号把瓦尔斯封起来?删除引号&可以尝试我发布的内容。
$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);
}
}https://stackoverflow.com/questions/27307788
复制相似问题