J'ai récemment posé et résolu une question concernant le chargement de fichiers .PDF de plus de 2 Mo dans une base de données MySQL en tant que BLOBS. J'ai dû modifier certains paramètres dans mon fichier php.ini et MySQLs paramètres de paquet maximum. Cependant, la résolution de ce problème m'a amené à découvrir un nouveau problème avec mon script.Téléchargement BLOB tronqué à 1 Mo Script fonctionne pour les fichiers moins de 1 Mo
Maintenant que je peux télécharger des fichiers dans ma base de données BLOB, j'ai essayé de télécharger le fichier à des fins de test. À mon grand désarroi quand je suis allé ouvrir le fichier .PDF j'ai reçu l'erreur suivante: Impossible de charger le document (erreur 3) 'file: ///tmp/test-13.pdf'. Après une enquête plus approfondie, j'ai découvert que le fichier en cours de téléchargement, test.pdf, était seulement 1 Mo, un peu moins de la moitié de sa taille supposée dans la base de données d'un peu plus de 2 Mo. C'est évidemment la raison de l'erreur.
Le code suivant est la partie de mon script que j'utilise pour télécharger des fichiers de la base de données. Il est au sommet du script et fonctionne parfaitement pour les fichiers de moins de 1 Mo.
foreach($_REQUEST as $key => $value)
{
if ($value == 'Open')
{
header();
session_start();
$dbh = new PDO('mysql:host='.$_SESSION['OpsDBServer'].'.ops.tns.its.psu.edu;
dbname='.$_SESSION['OpsDB'], $_SESSION['yoM'], $_SESSION['aMa']);
$id = $key;
$sqlDownload = "SELECT name, type, content, size FROM upload WHERE
id='".$id."'";
$result = $dbh->query($sqlDownload);
$download = $result->fetchAll();
$type = $download[0]['type'];
$size = $download[0]['size'];
$name = $download[0]['name'];
$content = $download[0]['content'];
header("Content-type: $type");
header("Content-Disposition: inline; filename=$name");
header("Content-length: $size");
header("Cache-Control: maxage=1");
header("Pragma: public");
echo $content;
exit;
}
}
Je pense que peut-être que j'ai quelques déclarations d'en-tête mal? Je suis très confus au sujet de ce qu'il faut faire. J'ai recherché php.ini et je n'ai trouvé aucun paramètre que je pense devoir changer et mon arrangement maximum de paquet pour MySQL est 4 MB donc un téléchargement de 2 MB.
Merci pour toute aide.
Avez-vous revérifié que * taille * est correctement définie dans votre base de données? –
Je n'ai pas vérifié, mais je le ferai quand je serai de retour au travail lundi. – dbaugh