使用 PHP 从数据库下载“blob”类型文件。文件已损坏,无法查看文件内容
Posted
技术标签:
【中文标题】使用 PHP 从数据库下载“blob”类型文件。文件已损坏,无法查看文件内容【英文标题】:Downloading 'blob' type file from database with PHP. Files are corrupted, unable to see the files' content 【发布时间】:2021-12-12 03:12:59 【问题描述】:我尝试使用此代码从我的数据库中下载文件,但是,当我尝试打开文件时,出现以下错误:
下载文件类型“图像”时:
下载文件类型“docx”时:
php代码:
<?php
include_once 'dbconfig.php';
if (isset($_GET['id']))
$id = $_GET['id'];
$query = "SELECT * FROM files_data WHERE id = '$id'";
$result = mysqli_query($connection,$query) or die('Error, query failed');
list($id, $file, $type, $size,$content) = mysqli_fetch_array($result);
header("Content-length: $size");
header("Content-type: $type");
header("Content-Disposition: attachment; filename=$file");
$content = stripslashes($content);
echo file_get_contents($content);
exit;
?>
数据库:
Word 文档的存储类型为:“application/vnd.openxmlformats-officedocument.wordprocessingml.document”(在屏幕截图中不可见)。我相信这是正确的
【问题讨论】:
请edit这个问题输入图像中的文本,以便可以在所有设备上阅读、引用、编辑和通过搜索找到它。就目前而言,your image makes it hard to answer your question or for people with related issues to find your question。请参阅formatting documentation 以获取在不借助图像的情况下使您的文本看起来很漂亮的提示。 【参考方案1】:我在尝试一些不同的代码时解决了这个错误:
<?php require_once('dbconfig.php'); ?>
<?php
$query = "SELECT name, type, size, content from files_data WHERE id='2'";
$result = $connection->query($query);
$row = $result->fetch_assoc();
$size = $row['size'];
$type = $row['type'];
$name =$row['name'];
$fileContent = $row['content'];
header("Content-length: $size");
header("Content-type: $type");
header("Content-Disposition: attachment; filename=$name");
echo $fileContent;
mysql_close();
?>
另外,我仍然认为我以前的代码很好,也许我遇到了与这里报告的相同的问题,答案是:Downloading jpg,doc,ppt files with php are corrupted
【讨论】:
以上是关于使用 PHP 从数据库下载“blob”类型文件。文件已损坏,无法查看文件内容的主要内容,如果未能解决你的问题,请参考以下文章
下载文件时在文件内容中获取类型 [object object],而不是使用 angular 7 获取 blob