表单提交图片,图片名保存到数据库,图片保存在文件夹里
时间: 2023-05-30 11:06:31 浏览: 123
要实现这个功能,需要以下步骤:
1.在 HTML 表单中添加一个文件上传的表单控件:
```html
<form action="upload.php" method="post" enctype="multipart/form-data">
<input type="file" name="image">
<input type="submit" value="上传">
</form>
```
2.在 PHP 脚本中接收上传的文件,并保存到指定的文件夹中:
```php
// 获取上传的文件
$image = $_FILES['image'];
// 获取文件名和扩展名
$name = $image['name'];
$ext = pathinfo($name, PATHINFO_EXTENSION);
// 生成新的文件名
$newName = uniqid() . '.' . $ext;
// 保存文件到指定的文件夹
$uploadDir = 'uploads/';
if (!file_exists($uploadDir)) {
mkdir($uploadDir, 0777, true);
}
$uploadFile = $uploadDir . $newName;
move_uploaded_file($image['tmp_name'], $uploadFile);
```
3.将文件名保存到数据库中:
```php
// 连接数据库
$conn = new mysqli('localhost', 'username', 'password', 'dbname');
// 定义 SQL 语句
$sql = "INSERT INTO images (filename) VALUES ('$newName')";
// 执行 SQL 语句
$conn->query($sql);
// 关闭数据库连接
$conn->close();
```
注意事项:
- 上传的文件必须通过 POST 方法提交,并且设置 enctype 属性为 multipart/form-data。
- 上传的文件在 $_FILES 变量中以数组的形式保存,包含文件名、临时文件名、文件类型、文件大小等信息。
- 为了避免文件名重复,可以使用 uniqid() 函数生成一个唯一的文件名。
- 保存文件时需要指定文件夹路径,并确保该文件夹存在,否则需要使用 mkdir() 函数创建。
- 保存文件时需要使用 move_uploaded_file() 函数将临时文件移动到指定的文件夹中。
- 将文件名保存到数据库时需要注意 SQL 注入攻击,可以使用 mysqli_real_escape_string() 函数对文件名进行转义。