php实现文件上传到数据库并下载(php实现多文件上传)

介绍

PHP被广泛使用于Web编程中,文件上传与下载是其中常见的功能。本文将介绍如何通过PHP将文件上传到数据库,并实现下载功能。

文件上传到数据库

首先,需要在数据库中创建一个表,用于存储上传的文件信息。可以这样设计:

```
CREATE TABLE files (
id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(255),
mime VARCHAR(255),
size INT,
data LONGBLOB
);
```

接着,需要编写PHP脚本实现文件上传操作。可以通过$_FILES数组获取上传的文件,然后将文件内容读入到一个变量中,再将变量存入数据库中。具体代码如下:

```
if ($_FILES['file']['error'] == UPLOAD_ERR_OK
&& is_uploaded_file($_FILES['file']['tmp_name'])) {

$name = $_FILES['file']['name'];
$mime = $_FILES['file']['type'];
$size = $_FILES['file']['size'];
$data = file_get_contents($_FILES['file']['tmp_name']);

$db = new mysqli('localhost', 'user', 'password', 'database');
$stmt = $db->prepare('INSERT INTO files (name, mime, size, data) VALUES (?, ?, ?, ?)');
$stmt->bind_param('ssib', $name, $mime, $size, $data);
$stmt->execute();

echo 'File uploaded!';
} else {
echo 'Upload failed.';
}
```

文件下载

接着,需要编写PHP脚本实现文件下载操作。查询数据库获取文件数据后,设置HTTP响应头,告诉浏览器将响应内容作为文件下载。具体代码如下:

```
$id = intval($_GET['id']);
$db = new mysqli('localhost', 'user', 'password', 'database');
$stmt = $db->prepare('SELECT name, mime, size, data FROM files WHERE id = ?');
$stmt->bind_param('i', $id);
$stmt->execute();
$stmt->bind_result($name, $mime, $size, $data);
if ($stmt->fetch()) {
header('Content-Type: ' . $mime);
header('Content-Disposition: attachment; filename="' . $name . '"');
header('Content-Length: ' . $size);
echo $data;
}
```

最后,需要在HTML页面中设置上传和下载按钮。上传按钮可以通过HTML表单实现,下载按钮可以通过链接形式实现,链接地址添加文件ID参数,例如:

```
Download file
```

综上,通过以上步骤,即可实现将文件上传到数据库,并实现下载功能。

本文来自投稿,不代表亲测学习网立场,如若转载,请注明出处:https://www.qince.net/php-fdo.html

郑重声明:

本站所有内容均由互联网收集整理、网友上传,并且以计算机技术研究交流为目的,仅供大家参考、学习,不存在任何商业目的与商业用途。 若您需要商业运营或用于其他商业活动,请您购买正版授权并合法使用。

我们不承担任何技术及版权问题,且不对任何资源负法律责任。

如遇到资源无法下载,请点击这里失效报错。失效报错提交后记得查看你的留言信息,24小时之内反馈信息。

如有侵犯您的版权,请给我们私信,我们会尽快处理,并诚恳的向你道歉!

(0)
上一篇 2023年5月3日 上午5:15
下一篇 2023年5月3日 上午5:15

猜你喜欢