gpt4 book ai didi

下载文件/文档时出现 PHP/SQL 问题

转载 作者:行者123 更新时间:2023-11-30 21:54:04 25 4
gpt4 key购买 nike

我的数据库中上传的文件有一些问题。我将我的文件(doc、img、...)上传到我的数据库中:

CREATE TABLE IF NOT EXISTS `pj` (
id bigint(20) NOT NULL AUTO_INCREMENT,
name varchar(30) NOT NULL,
type varchar(30) NOT NULL,
size int(11) NOT NULL,
content mediumblob NOT NULL,
id_demande int(100) DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `FK_pj_id_demande` (`id_demande`)) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8;

然后我使用这个 PHP 代码上传:

if($_FILES['userfile']['size'] > 0)
{
$fileName = $_FILES['userfile']['name'];
$tmpName = $_FILES['userfile']['tmp_name'];
$fileSize = $_FILES['userfile']['size'];
$fileType = $_FILES['userfile']['type'];

$fp = fopen($tmpName, 'r');
$content = fread($fp, filesize($tmpName));
$content = addslashes($content);
fclose($fp);

if(!get_magic_quotes_gpc())
{
$fileName = addslashes($fileName);
}

$query = "INSERT INTO pj (name, type, size, content, id_demande) VALUES ('$fileName', '$fileType', '$fileSize', '$content', $queryID)";
$resultQ =mysqli_query($con, $query);

}

下载后我用这个:

$sqlPJ = "SELECT name, type, size, content FROM pj WHERE id_demande = 1";
$queryPJ = $db->prepare($sqlPJ);
$queryPJ->execute();
$resultPJ = $queryPJ->fetchAll( PDO::FETCH_ASSOC );

foreach($resultPJ as $rowPJ){
$size = $rowPJ['size'];
$type = $rowPJ['type'];
$name = $rowPJ['name'];
header("Content-length: $size");
header("Content-type: $type");
header("Content-Disposition: attachment; filename=$name");
echo $rowPJ['content'];
}

之后,我的浏览器询问我是否要使用 Office Word(它是一个 doc 文件)打开它,但其中的文本如下所示:

enter image description here

我做错了什么?

附言:二手this tutorial帮助我!

最佳答案

在 fread 中,将 'r' 更改为 'rb' 以获得“二进制”模式。这将避免在 Windows 中混淆 CR 和 LF。

为了进一步检查——查看文件中和 mediumblob 中有多少字节(使用 LENGTH())。如果它们不匹配,则仍然有问题。

关于下载文件/文档时出现 PHP/SQL 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45996874/

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