2013-11-26 85 views
0

我试图做一个PHP站点上传文件(在这种情况下的视频)并显示它们。我试图将它们存储在一个数组中,然后将它们显示在页面上。问题是,该页面仅显示上传的最后一个视频,即该阵列仅存储上次上传的文件。我怎样才能让数组存储第一个上传的文件$array[0],第二个$array[1],等等......然后显示它们?使用PHP中的数组显示上传的文件

这里是我的代码(HTML格式)

<form action="upload.php" method="POST" enctype="multipart/form-data"> 
<p>Video to Upload: <br> <input type="file" name="video" /></p> 
<p><input type="submit" name="Submit" value="Submit" /></p></form> 

PHP代码(upload.php

<?php 
$videoname = $_FILES["video"]["name"]; 


$tmp_name = $_FILES["video"]["tmp_name"]; 

$thevideos = array(); 

if (isset($videoname)) 
{ 
    if (!empty($videoname)) 
    { 
     $location = 'uploaded/'; 

     move_uploaded_file($tmp_name, $location.$videoname); 


     $thevideos[] = $videoname; // the array is only storing $videoname in $the videos[0]?? 


     for ($i = 0; $i <= count($thevideos); $i++) 
     { 
      echo "<video width=\"320\" height=\"240\" controls> 
      <source src=\"/uploaded/" .$thevideos[$i]. "\"> 
      </video> <br>"; 
     } 

    } 
    else 
    { 
     echo "Please choose a file."; 
    } 

} 

?> 
+0

请注意,您允许任何人上传PHP/ASP/CGI /和其他脚本文件,因此可以上传shell并销毁您的服务器 - 查看您的所有文件 - 查看您的所有源代码 - 您的数据库凭据 - 等等等等等等。 – h2ooooooo

+0

我完全意识到,一旦程序按其应有的方式运行,我会提出限制。 – user3037589

+0

那么,用户一次只能上传一个视频?你想显示所有以前的上传? '$ thevideos'每次都会是一个空阵列,您需要一种方法来获取之前上传的视频。 –

回答

0

正如评论所说,如果你想获得内的所有文件的清单目录中,您应该考虑使用scandirglob函数。

scandir是一个很好的选择,如果您需要列出目录中的所有内容,并且glob是一个很好的选择,如果您需要基于通配符或扩展名列出文件。