问题描述
有人可以提供帮助,因为我想将多个图像上传到服务器以及图像名称到数据库。
查看:
<form action="<?PHP echo URLROOT; ?>/posts/add" method="post" enctype='multipart/form-data'>
<input type="file" name="file[]" multiple>
<input type="submit" name=submit value="Submit">
</form>
控制器:
if($_SERVER['REQUEST_METHOD'] == 'POST'){
// Count total files
$countfiles = count($_FILES['file']['name']);
// Looping all files
for($i=0;$i<$countfiles;$i++){
$filename = $_FILES['file']['name'][$i];
// Upload file
move_uploaded_file($_FILES['file']['tmp_name'][$i],dirname(__DIR__)."/img/".$filename);
}
} else {
// Load view with errors
$this->view('posts/add');
}
}
使用以下代码和 3 个单独的输入时,我还可以上传 3 个图像名称:
查看:
<form action="<?PHP echo URLROOT; ?>/posts/add" method="post">
<input type="file" name="image1">
<input type="file" name="image2">
<input type="file" name="image3">
<input type="submit" name=submit value="Submit">
</form>
控制器:
if($_SERVER['REQUEST_METHOD'] == 'POST'){
// Sanitize POST array
$_POST = filter_input_array(INPUT_POST,FILTER_SANITIZE_STRING);
$data = [
'user_id' => $_SESSION['user_id'],'image1' => trim($_POST['image1']),'image2' => trim($_POST['image2']),'image3' => trim($_POST['image3']),];
// Validated
if($this->postModel->addPost($data)){
flash('post_message','Post Added');
redirect('posts');
} else {
die('Something went wrong');
}
} else {
$data = [
'image1' => '','image2' => '','image3' => ''
];
$this->view('posts/add',$data);
}
}
有人可以建议我如何组合代码,以便使用单个文件输入将图像上传到服务器,以及将图像名称上传到数据库吗?
解决方法
完整代码
<form method='post' action='' enctype='multipart/form-data'>
<input type="file" name="file[]" id="file" multiple>
<input type='submit' name='submit' value='Upload'>
</form>
PHP
<?php
if(isset($_POST['submit'])){
$imageName =$_FILES['file']['name'];
// Count total files
$countfiles = count($_FILES['file']['name']);
// Looping all files
for($i=0;$i<$countfiles;$i++){
$filename = $_FILES['file']['name'][$i];
// Upload file
move_uploaded_file($_FILES['file']['tmp_name'][$i],'upload/'.$filename);
//insert code
$query = "insert into images(images) values('".$imageName."')";
mysqli_query($con,$query);
}
}
?>
,
使用此输入代码 -
<input type="file" name="image[]" id="file" multiple>
并在php文件中计数文件,然后使用循环来迭代文件,例如-
$counts = count($_FILES['image']['name']);
for($i=0;$i<$counts;$i++){
//uploading code here
}