我正在尝试在我的网页上做一个功能,将文件上传到mysql数据库,然后显示/让用户以后可以下载文件。pdf文件的上传看起来不错,但打开下载的文件时,adobe告诉我文件已损坏。当试图在浏览器中显示文件时,它表示无法打开该文件。请帮忙
上载脚本:
if(isset($_POST['submit'])){
$name = $_FILES['myfile']['name'];
$type = $_FILES['myfile']['type'];
$data = file_get_contents($_FILES['myfile']['tmp_name']);
$stmt = $pdo->prepare("INSERT INTO f_driver VALUES('', ?, 'Datablad', ?, ?, ?, NULL, ?)");
$stmt->bindParam(1, $name);
$stmt->bindParam(2, $type);
$stmt->bindParam(3, $data);
$stmt->bindParam(4, $pid);
$stmt->bindParam(5, $uid);
$stmt->execute();
}
下载/显示脚本(附件更改为内联)
require_once("../include/pdo_connect.php");
$id = $_GET['id'];
$table = $_GET['table'];
$stat = $pdo->prepare("SELECT * FROM $table WHERE id = ?");
$stat->bindParam(1, $id);
$stat->execute();
$row = $stat->fetch();
$name = $row['name'];
$type = $row['mime'];
$content = $row['data'];
header("Content-type: $type");
header("Content-Disposition: attachment; filename=$name");
echo $content;
2条答案
按热度按时间u1ehiz5o1#
我找到了解决我问题的办法。pdo的默认缓冲区大小似乎是1mib。这是用$pdo->setattribute更改的(pdo::mysql\u attr\u max\u buffer\u size=1024102416);16 mb。然后一切都很完美。
gt0wga4j2#
您能提供一份您的table结构的样品吗?似乎最有可能的是
data
表的字段类型没有为大型数据集设置,并在特定字节数之后切断数据。你试过不同的字段类型吗?也许LONGTEXT
或者BLOB
?