为了解释我想要实现的目标,我希望用户能够在没有多个文件输入字段的情况下进行多个文件上传(特别是图像),因此我在页面中使用了<input type="file" multiple="multiple" name="files[]">
。
下面是我的PHP:
session_start();
include('connect.php');
// Connect to server and select databse.
mysql_connect("$host", "$username", "$password")or die("cannot connect");
mysql_select_db("$db_name")or die("cannot select DB");
$tbl_name="Pictures"; // Table name
if(isset($_POST['submit'])) {
if(isset($_FILES['files'])){
$errors= array();
$files = array();
for($i=0; $i<count($_FILES['files']['name']); $i++) {
$tmpFilePath = $_FILES['files']['tmp_name'][$i];
$file_name = $i.$_FILES['files']['name'][$i];
$file_size =$_FILES['files']['size'][$i];
$file_tmp =$_FILES['files']['tmp_name'][$i];
$file_type=$_FILES['files']['type'][$i];
$desired_dir="images";
$random_digit=rand(0000,9999);
if ($tmpFilePath != ""){
$newFilePath = "images/" . $random_digit . $_FILES['files']['name'][$i];
}
if($file_size > 2097152){
$errors[]='File size must be less than 2 MB';
} else {
move_uploaded_file($tmpFilePath, $newFilePath);
}
$files = array($newFilePath);
$_SESSION['files'] = $files;
}
}
}
所以这个正在做的是将文件添加到我的目录中,这是正常工作的,我已经做到了,所以在文件之前有一个随机数,以避免重复,因为会有很多文件上传。它是上传多个文件很好,但我想做的下一步是去下一页,这将打印出一些文本输入字段基于多少文件已上传,允许用户添加到每个文件的标题。然后,一旦提交,每个文件及其标题将被插入mySQL数据库。
我想到的最简单的方法是将每个$newFilePath(这是每个图像的文件路径)上传到数组中。我尝试了一下,然后使用
打印数组:foreach($files as $f) {
echo $f . '<br>';
}
它只上传了第一个文件,而不是所有文件。我想然后将数组添加到$_SESSION中,以便我可以在另一个页面上使用它们,但一旦我得到排序,可能会在一个页面上完成所有操作。什么好主意吗?
$files = array($newFilePath);
应该$files[] = $newFilePath;
您可以直接将数组添加到会话数据中:
$_SESSION['files'] = $files;