bonjour à tous,
voici mon problème, j'essaye de donner l'accès au téléchargement d'un fichier dans un répertoire du serveur (/public_ftp), le problème est que l'accès à ce répertoire est interdit malgré j'ai donné le droit de lecture et d'exécution à tout le monde. par contre si je place le fichier dans le répertoire /public_html, le téléchargement est lancé.
j'utilise la fonction readfile pour cela, est ce que je dois passer par un téléchargement en utilisant les paramètres ftp ou c'est possible déjà avec cette fonction ?
voici le code que j'utilise :
//Fichier download.php : lien vers le fichier de téléchargement download_files.php
<a href="download_files.php?filename=MABIA-REGION Software.rar" title="Download MABIA-REGION"><img src="images/download.png"/></a>
//Fichier download_files.php
<?php
// désactive le temps max d'exécution
set_time_limit(0);
if (empty($_GET["filename"]))
{
header("HTTP/1.1 404 Not Found");
exit;
}
// le nom doit être un nom de fichier
if(basename($_GET["filename"]) != $_GET["filename"])
{
header("HTTP/1.1 400 Bad Request");
exit;
}
// vérifie l'existence et l'accès en lecture au fichier
$filename = $_SERVER['DOCUMENT_ROOT']."../public_ftp/".$_GET["filename"];
if (!file_exists($filename))
{
header("HTTP/1.1 404 Not Found");
exit;
}
if (!is_file($filename) || !is_readable($filename))
{
header("HTTP/1.1 404 Not Found");
exit;
}
//telechargement
header('Content-Description: File Transfer');
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename=' . basename($filename));
header('Content-Transfer-Encoding: binary');
header('Expires: 0');
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
header('Pragma: public');
header('Content-Length: ' . filesize($filename));
readfile($filename);
?>
merci pour votre aide
voici mon problème, j'essaye de donner l'accès au téléchargement d'un fichier dans un répertoire du serveur (/public_ftp), le problème est que l'accès à ce répertoire est interdit malgré j'ai donné le droit de lecture et d'exécution à tout le monde. par contre si je place le fichier dans le répertoire /public_html, le téléchargement est lancé.
j'utilise la fonction readfile pour cela, est ce que je dois passer par un téléchargement en utilisant les paramètres ftp ou c'est possible déjà avec cette fonction ?
voici le code que j'utilise :
//Fichier download.php : lien vers le fichier de téléchargement download_files.php
<a href="download_files.php?filename=MABIA-REGION Software.rar" title="Download MABIA-REGION"><img src="images/download.png"/></a>
//Fichier download_files.php
<?php
// désactive le temps max d'exécution
set_time_limit(0);
if (empty($_GET["filename"]))
{
header("HTTP/1.1 404 Not Found");
exit;
}
// le nom doit être un nom de fichier
if(basename($_GET["filename"]) != $_GET["filename"])
{
header("HTTP/1.1 400 Bad Request");
exit;
}
// vérifie l'existence et l'accès en lecture au fichier
$filename = $_SERVER['DOCUMENT_ROOT']."../public_ftp/".$_GET["filename"];
if (!file_exists($filename))
{
header("HTTP/1.1 404 Not Found");
exit;
}
if (!is_file($filename) || !is_readable($filename))
{
header("HTTP/1.1 404 Not Found");
exit;
}
//telechargement
header('Content-Description: File Transfer');
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename=' . basename($filename));
header('Content-Transfer-Encoding: binary');
header('Expires: 0');
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
header('Pragma: public');
header('Content-Length: ' . filesize($filename));
readfile($filename);
?>
merci pour votre aide