gpt4 book ai didi

php - 将文件内容直接导入数据库 - Excel 电子表格需要修复

转载 作者:行者123 更新时间:2023-11-29 11:27:19 26 4
gpt4 key购买 nike

我正在开发一个项目,将文件直接存储在 MySQL 数据库中。该代码运行得非常好,可以存储和下载文本文件、图片和 PDF,但在使用 Excel 电子表格时却出现问题。

如果我存储 Excel 传播 (.xlsx) 文件,则上传工作正常,但当我下载该文件时,下载似乎工作正常,但当我打开电子表格时,我会得到以下信息:

我们发现“filename.xlsx”中的某些内容存在问题。您希望我们尽力恢复吗?如果您信任此工作台的来源,请单击“是?”

当我按时,我会得到以下信息:

Excel 已完成文件级验证和修复。本工作簿的某些部分可能已被修复或丢弃。

执行此操作时,Excel 加载正常,一切看起来都正常,但为什么我会收到此错误,以及为什么需要修复它。

我使用以下方式存储文件:

private function writeFileToDatabase($fileName, $tmpName, $type, $fileSize, $fileArea, &$error)
{
$fileName = mysqli_escape_string($this->conn, $fileName);
$fileSize = mysqli_escape_string($this->conn, $fileSize);
$type = mysqli_escape_string($this->conn, $type);
$fileArea = mysqli_escape_string($this->conn, $fileArea);

//Open the uploaded file
$fh = fopen($tmpName, 'r');
if (!$fh)
{
$error = "Could not open uploaded file";
return false;
}
$content = fread($fh, filesize($tmpName));
$content = mysqli_escape_string($this->conn, $content);
fclose($fh);

//Store the file in the database
$query = "INSERT INTO file_store (RecordID, Area, FileName, ContentType, Size, FileContent) "
. "VALUES ('$this->recordID', '$fileArea', '$fileName', '$type', '$fileSize', '$content')";
$result = $this->conn->query($query);
}

我使用以下命令下载文件:

function downloadFile($fileID)
{
$fileID = mysqli_escape_string($this->conn, $fileID);

$query = "SELECT * FROM file_store WHERE id='$fileID'";
$result = $this->conn->query($query);
if ($result)
{
$data = $result->fetch_array();
header("Content-length: " . $data["Size"]);
header("Content-type: " . $data["ContentType"]);
header("Content-Disposition: attachment; filename=" . $data["FileName"]);
echo $data["FileContent"];
}
else
{
echo mysqli_error($this->conn);
}
}

最佳答案

之后

echo $data["FileContent"];

尝试添加这个:

ob_clean();
flush();

如果仍然不起作用 - 也许 try catch 内容类型,如果它不是文本文件,请添加另一个 header :

header('Content-Transfer-Encoding: binary');

关于php - 将文件内容直接导入数据库 - Excel 电子表格需要修复,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37974945/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com