上传下载附件 如何在php中上传下载附件并以二进制的形式保存到数据库中的 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 抛砖引玉。数据表:CREATE TABLE IF NOT EXISTS `upload` ( `id` int(11) NOT NULL AUTO_INCREMENT, `filename` varchar(255) NOT NULL, `type` varchar(255) NOT NULL, `data` longblob NOT NULL, PRIMARY KEY (`id`)) DEFAULT CHARSET=utf8PHP代码:<?phpheader('content-type: text/html; charset=utf-8');$mysqli = new mysqli('localhost', 'root', 'root', 'csdn');$mysqli->set_charset('utf8');function alert($msg){ echo '<script type="text/javascript">'; echo 'alert("', $msg, '");'; echo '</script>';}$action = isset($_GET['action']) ? $_GET['action'] : '';if ($action == 'upload'){ if (is_uploaded_file($_FILES['upload']['tmp_name'])) { $filename = $_FILES['upload']['name']; $type = $_FILES['upload']['type']; $handle = fopen($_FILES['upload']['tmp_name'], 'rb'); $data = fread($handle, filesize($_FILES['upload']['tmp_name'])); fclose($handle); $stmt = $mysqli->prepare('INSERT INTO `upload` (`filename`, `type`, `data`) VALUES (?, ?, ?)'); $stmt->bind_param('sss', $filename, $type, $data); if (!$stmt->execute()) alert('上传失败!'); } else alert('上传失败!');}if ($action == 'download'){ $id = isset($_GET['id']) ? intval($_GET['id']) : 0; if ($id > 0) { $stmt = $mysqli->prepare('SELECT `filename`, `type`, `data` FROM `upload` WHERE `id`=?'); $stmt->bind_param('i', $id); if ($stmt->execute() && $stmt->store_result() && $stmt->num_rows > 0) { $stmt->bind_result($filename, $type, $data); $stmt->fetch(); header('content-type: ' . $type); header('content-disposition: attachment; filename=' . $filename); echo $data; exit; } else alert('文件不存在!'); } else alert('文件不存在!');}$result = $mysqli->query('SELECT `id`, `filename` FROM `upload`');if ($result && $result->num_rows > 0){ echo '<ul>'; while ($row = $result->fetch_object()) { echo '<li><a href="', basename(__FILE__), '?action=download&id=', $row->id, '">'; echo $row->filename, '</a></li>'; } echo '</ul>';}else echo '没有文件<br/>';?><hr/><form action="<?php echo basename(__FILE__);?>?action=upload" method="post" enctype="multipart/form-data"><input type="file" name="upload"/> <input type="submit" value="上传"/></form> 看看vBB的代码吧,啦就是采用的数据库保存附件 求PHP支持UTF8的“分词”程序,急...... 求人:网址批量替换 有没有类似“百度知道”的那种基于php的开源程序? 提问 session问题还没解决 象新浪这样大的网站,是不是也用 cms内容管理系统呀?一般用什么呢? 100分请教: 图片加载--用户体验 请教一个奇怪的问题! 发布一个PHP扩展,读取纯真数据库 求这段PHP代码解密 ~~ 万分感谢 ~~ 安装extplorer 求助 【求助】网站不良词汇过滤 不良词汇征集
CREATE TABLE IF NOT EXISTS `upload` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`filename` varchar(255) NOT NULL,
`type` varchar(255) NOT NULL,
`data` longblob NOT NULL,
PRIMARY KEY (`id`)
) DEFAULT CHARSET=utf8PHP代码:
<?php
header('content-type: text/html; charset=utf-8');$mysqli = new mysqli('localhost', 'root', 'root', 'csdn');
$mysqli->set_charset('utf8');function alert($msg)
{
echo '<script type="text/javascript">';
echo 'alert("', $msg, '");';
echo '</script>';
}$action = isset($_GET['action']) ? $_GET['action'] : '';if ($action == 'upload')
{
if (is_uploaded_file($_FILES['upload']['tmp_name']))
{
$filename = $_FILES['upload']['name'];
$type = $_FILES['upload']['type'];
$handle = fopen($_FILES['upload']['tmp_name'], 'rb');
$data = fread($handle, filesize($_FILES['upload']['tmp_name']));
fclose($handle);
$stmt = $mysqli->prepare('INSERT INTO `upload` (`filename`, `type`, `data`) VALUES (?, ?, ?)');
$stmt->bind_param('sss', $filename, $type, $data);
if (!$stmt->execute()) alert('上传失败!');
}
else alert('上传失败!');
}if ($action == 'download')
{
$id = isset($_GET['id']) ? intval($_GET['id']) : 0;
if ($id > 0)
{
$stmt = $mysqli->prepare('SELECT `filename`, `type`, `data` FROM `upload` WHERE `id`=?');
$stmt->bind_param('i', $id);
if ($stmt->execute() && $stmt->store_result() && $stmt->num_rows > 0)
{
$stmt->bind_result($filename, $type, $data);
$stmt->fetch();
header('content-type: ' . $type);
header('content-disposition: attachment; filename=' . $filename);
echo $data;
exit;
}
else alert('文件不存在!');
}
else alert('文件不存在!');
}$result = $mysqli->query('SELECT `id`, `filename` FROM `upload`');
if ($result && $result->num_rows > 0)
{
echo '<ul>';
while ($row = $result->fetch_object())
{
echo '<li><a href="', basename(__FILE__), '?action=download&id=', $row->id, '">';
echo $row->filename, '</a></li>';
}
echo '</ul>';
}
else echo '没有文件<br/>';
?>
<hr/>
<form action="<?php echo basename(__FILE__);?>?action=upload" method="post" enctype="multipart/form-data">
<input type="file" name="upload"/>
<input type="submit" value="上传"/>
</form>