使用 PHP 和单个 HTML 输入将多个图像上传到服务器和数据库[重复]
Posted
技术标签:
【中文标题】使用 PHP 和单个 HTML 输入将多个图像上传到服务器和数据库[重复]【英文标题】:Uploading multiple images to server and database using PHP and a single HTML input [duplicate] 【发布时间】:2021-05-29 13:42:03 【问题描述】:有人可以帮忙吗,因为我想将多张图片上传到服务器,并将图片名称上传到数据库。
以下代码用于将图像上传到服务器:
查看:
<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);
有人可以建议我如何组合代码,以便使用单个文件输入将图像上传到服务器,以及将图像名称上传到数据库吗?
【问题讨论】:
你想要一个输入类型的文件在codeigniter中上传多张图片吗? @KUMAR 谢谢你的回复。是的,我只想使用一个输入。对于多个图像。它适用于自定义 MVC 框架。 好的,请稍等。 现在请查看我的更新答案。 SO上有很多重复的,你试过吗? 【参考方案1】:完整代码
<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);
?>
【讨论】:
感谢您的代码。此代码适用于将图像上传到服务器。您能否建议我如何添加将图像名称上传到数据库的部分? 使用插入查询 谢谢。您能否建议我如何声明或分离当前存储在 $filename 变量中的不同图像或文件名?【参考方案2】:使用此输入代码 -
<input type="file" name="image[]" id="file" multiple>
然后在 php 文件中计数文件,然后使用循环来迭代文件,如-
$counts = count($_FILES['image']['name']);
for($i=0;$i<$counts;$i++)
//uploading code here
【讨论】:
感谢您的回复。这适用于图像上传部分,但我不确定如何获取不同的图像名称以便将它们声明为变量,以便在数据库中的不同列中上传不同的图像名称。以上是关于使用 PHP 和单个 HTML 输入将多个图像上传到服务器和数据库[重复]的主要内容,如果未能解决你的问题,请参考以下文章
在单个 PHP 中使用 AFNetworking 2.0 上传图像和信息(两者)