php文件上传数据库与下载连接数据库
时间: 2023-12-19 13:06:36 浏览: 116
php文件上传下载
5星 · 资源好评率100%
如果你想将文件上传到数据库中,可以使用 BLOB (二进制大型对象)类型字段来存储文件的二进制数据。以下是一个 PHP 文件上传到数据库的示例代码:
```php
<?php
$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "myDB";
// 创建连接
$conn = new mysqli($servername, $username, $password, $dbname);
// 检查连接
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
// 获取上传的文件
$file = $_FILES['file']['tmp_name'];
// 将文件转换为二进制数据
$fileContent = addslashes(file_get_contents($file));
// 将文件数据插入到数据库中
$sql = "INSERT INTO files (filename, filecontent) VALUES ('".$_FILES['file']['name']."', '".$fileContent."')";
if ($conn->query($sql) === TRUE) {
echo "File uploaded successfully";
} else {
echo "Error: " . $sql . "<br>" . $conn->error;
}
$conn->close();
?>
```
上述代码将上传的文件转换为二进制数据,并将其插入到名为 `files` 的数据库表中。该表包含两个字段,一个是文件名 `filename`,另一个是文件内容 `filecontent`。
如果你想从数据库中下载文件,可以使用以下代码:
```php
<?php
$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "myDB";
// 创建连接
$conn = new mysqli($servername, $username, $password, $dbname);
// 检查连接
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
// 获取要下载的文件的 ID
$fileId = $_GET['id'];
// 从数据库中读取文件内容
$sql = "SELECT filecontent, filename FROM files WHERE id=".$fileId;
$result = $conn->query($sql);
$row = $result->fetch_assoc();
$fileContent = $row['filecontent'];
$fileName = $row['filename'];
// 发送文件给用户
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename="'.$fileName.'"');
echo $fileContent;
$conn->close();
?>
```
上述代码从数据库中获取要下载的文件的 ID,然后从数据库中读取文件内容,并将其发送给用户。需要注意的是,在发送文件之前,需要设置正确的 Content-Type 和 Content-Disposition 头信息,以确保浏览器能够正确地处理文件。
阅读全文