php实现文件上传与下载数据库
时间: 2023-08-14 07:02:19 浏览: 108
文件上传与下载是Web开发中常见的功能之一。下面是一个简单的PHP代码示例,演示如何实现文件上传与下载到数据库。
文件上传到数据库:
```php
<?php
//数据库连接信息
$host = "localhost";
$username = "root";
$password = "password";
$dbname = "test";
//连接数据库
$conn = mysqli_connect($host, $username, $password, $dbname);
if(!$conn){
die("连接失败: " . mysqli_connect_error());
}
//上传文件
if(isset($_POST['submit'])){
$file = $_FILES['file'];
$fileName = $file['name'];
$fileType = $file['type'];
$fileContent = file_get_contents($file['tmp_name']);
//将文件内容存入数据库
$sql = "INSERT INTO files (name, type, content) VALUES ('$fileName', '$fileType', '$fileContent')";
if(mysqli_query($conn, $sql)){
echo "文件上传成功!";
}else{
echo "上传失败:" . mysqli_error($conn);
}
}
?>
<form method="post" enctype="multipart/form-data">
<input type="file" name="file">
<input type="submit" name="submit" value="上传">
</form>
```
文件下载从数据库:
```php
<?php
//数据库连接信息
$host = "localhost";
$username = "root";
$password = "password";
$dbname = "test";
//连接数据库
$conn = mysqli_connect($host, $username, $password, $dbname);
if(!$conn){
die("连接失败: " . mysqli_connect_error());
}
//从数据库中获取文件内容
$sql = "SELECT * FROM files WHERE id = 1"; //假设文件ID为1
$result = mysqli_query($conn, $sql);
if(mysqli_num_rows($result) > 0){
$row = mysqli_fetch_assoc($result);
$fileName = $row['name'];
$fileType = $row['type'];
$fileContent = $row['content'];
//将文件内容输出到浏览器
header("Content-type: $fileType");
header("Content-Disposition: attachment; filename=$fileName");
echo $fileContent;
}else{
echo "文件不存在!";
}
?>
```
以上代码仅作为示例,实际应用中需要注意文件大小限制、文件类型限制、文件名重复等问题。另外,将大文件存入数据库可能会影响性能,可以考虑将文件存储在服务器的文件系统中,只在数据库中存储文件的元数据。
阅读全文