gpt4 book ai didi

php - 无法将 .pdf 文件存储在 mySQL 的 blob 中

转载 作者:行者123 更新时间:2023-11-29 00:11:01 25 4
gpt4 key购买 nike

所以我试图将 PDF 文件上传到 mySQL blob 中,表行被插入但是在 mediumBlob 类型的 fileContent 中它总是显示为 [BLOB 0 B] 并且当文件被下载时,它被下载0字节。我回显了 $content 并且它显示了 pdf 文件的特殊字符。

$erro = '';
$tipo = '';
if (isset($_POST['submit']) && isset($_POST['text']) && $_POST['text'] !== null && isset($_POST['userID']))
{
if(preg_match('/^[a-z0-9-]+$/',$_POST['text']) && strlen($_POST['text']) < 15 )
{

if (substr($_FILES['file']['name'], -3, 3) == "pdf" && $_FILES["file"]["size"] < 1000000)
{

if ($_FILES["file"]["error"] > 0)
{
$erro = "Problema: " . $_FILES["file"]["error"];
$tipo = 'erro';
}
else
{
$_FILES["file"]["name"] = $_POST['text'].'.pdf';
$erro = "Ficheiro guardado com sucesso.";
$tipo = 'sucesso';
}
}
else
{
$erro = "Apenas .PDF com menos de 10 Mb são permitidos!";
$tipo = 'erro';
}
}
else
{
$erro = "Nome inválido";
$tipo = 'erro';
}

if ($tipo == 'sucesso')
{
$content = $db->real_escape_string(file_get_contents($_FILES['file']['tmp_name']));

if ($_FILES["file"]["size"] > 0)
{
$smt = $db->prepare('INSERT into uploads (userRefID,fileName,fileType,fileSize,fileContent,uploadDate) values(?,?,?,?,?,?)');
$smt->bind_param('issibs', $_POST['userID'], $_FILES["file"]["name"], $_FILES["file"]["type"], $_FILES["file"]["size"], $content ,date(c));
$smt->execute();
$smt->close();
}
}



}

我做错了什么?

最佳答案

根据 this comment您不应在 bind_param 中直接传递 blob,而应使用 send_long_data

来自 send_long_data 的文档这是一个例子:

$stmt = $mysqli->prepare("INSERT INTO messages (message) VALUES (?)");
$null = NULL;
$stmt->bind_param("b", $null);
$fp = fopen("messages.txt", "r");
while (!feof($fp)) {
$stmt->send_long_data(0, fread($fp, 8192));
}
fclose($fp);
$stmt->execute();

关于php - 无法将 .pdf 文件存储在 mySQL 的 blob 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25061673/

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