php - 我如何在此代码中上传多个图像
问题描述
我是 php 编程新手 我有代码允许用户在我的网站上上传图片 这是 html 部分...
<div class="col-sm-5">
<input type="file" id="photo" name="photo">
</div>
这是php部分
if(isset($_POST['add'])){
$name = $_POST['name'];
$slug = slugify($name);
$category = $_POST['category'];
$price = $_POST['price'];
$description = $_POST['description'];
$filename = $_FILES['photo']['name'];
$conn = $pdo->open();
$stmt = $conn->prepare("SELECT *, COUNT(*) AS numrows FROM products WHERE slug=:slug");
$stmt->execute(['slug'=>$slug]);
$row = $stmt->fetch();
if($row['numrows'] > 0){
$_SESSION['error'] = 'Product already exist';
}
else{
if(!empty($filename)){
$ext = pathinfo($filename, PATHINFO_EXTENSION);
$new_filename = $slug.'.'.$ext;
move_uploaded_file($_FILES['photo']['tmp_name'], '../images/'.$new_filename);
}
else{
$new_filename = '';
}
try{
$stmt = $conn->prepare("INSERT INTO products (category_id, name, description, slug, price, photo) VALUES (:category, :name, :description, :slug, :price, :photo)");
$stmt->execute(['category'=>$category, 'name'=>$name, 'description'=>$description, 'slug'=>$slug, 'price'=>$price, 'photo'=>$new_filename]);
$_SESSION['success'] = 'User added successfully';
}
catch(PDOException $e){
$_SESSION['error'] = $e->getMessage();
}
}
$pdo->close();
}
else{
$_SESSION['error'] = 'Fill up product form first';
}
header('location: products.php');
然后...显示图像
<img src="<?php echo (!empty($product['photo'])) ? 'images/'.$product['photo'] : 'images/noimage.jpg'; ?>" width="100%" class="zoom" data-magnify-src="images/large-<?php echo $product['photo']; ?>">
代码工作正常,除了它只允许用户上传一张图片......我该如何更改以便用户可以上传四张图片......请帮助我。谢谢
解决方案
HTML
<div class="col-sm-5">
<input type="file" id="photo" name="photo" multiple>
</div>
已编辑
$images = explode(',',$product['photo']));
foreach($images as $val){
<img src="<?php echo (!empty($val)) ? 'images/'.$val : 'images/noimage.jpg'; ?>" width="100%" class="zoom" data-magnify-src="images/large-<?php echo $val; ?>">
}
在数据库中取text
数据类型为photo
PHP
if(isset($_POST['add'])){
$name = $_POST['name'];
$slug = slugify($name);
$category = $_POST['category'];
$price = $_POST['price'];
$description = $_POST['description'];
$conn = $pdo->open();
$stmt = $conn->prepare("SELECT *, COUNT(*) AS numrows FROM products WHERE slug=:slug");
$stmt->execute(['slug'=>$slug]);
$row = $stmt->fetch();
if($row['numrows'] > 0){
$_SESSION['error'] = 'Product already exist';
}
else{
if(isset($_FILES['photo']['name'][0]) && $_FILES['photo']['size'][0] != 0 && $_FILES['photo']['error'][0] == 0)
{
$filesCount = count($_FILES['photo']['name']);
for($i = 0; $i < $filesCount; $i++) {
$ext = pathinfo($_FILES['photo']['name'][$i], PATHINFO_EXTENSION);
$new_filename = $slug.'_'date('Y-m-d h:i:s').'.'.$ext;
move_uploaded_file($_FILES['photo']['tmp_name'][$i], '../images/'.$new_filename);
$allfiles[] = $new_filename;
}
$uploaded_img = implode(',',$allfiles);
}
else{
$uploaded_img = '';
}
try{
$stmt = $conn->prepare("INSERT INTO products (category_id, name, description, slug, price, photo) VALUES (:category, :name, :description, :slug, :price, :photo)");
$stmt->execute(['category'=>$category, 'name'=>$name, 'description'=>$description, 'slug'=>$slug, 'price'=>$price, 'photo'=>$uploaded_img]);
$_SESSION['success'] = 'User added successfully';
}
catch(PDOException $e){
$_SESSION['error'] = $e->getMessage();
}
}
$pdo->close();
}
else{
$_SESSION['error'] = 'Fill up product form first';
}
header('location: products.php');
推荐阅读
- javascript - 除日期外,如何在数字和非数字之间添加空格?
- protractor - protractor + cucumber 等待和超时而不执行完整测试
- php - 多个表的多个列连接到同一个表
- python - 我应该如何在非常长的、不连贯的序列上训练我的 Keras 有状态 LSTM?
- python - --noconsole 不适用于 Pyinstaller
- python - sklearn.pca() 和 n_components,线性代数困境
- java - UJMP 稀疏矩阵库不支持
- azure - VSTS:“由于 Azure AD 中的权限,您不能执行此任务。请联系您的目录管理员”
- windows - 如何在没有外部 ps1 文件的情况下创建执行 powershell 脚本的 bat 文件?
- apache - .htaccess 不适用于托管的 aws ec2 多域