[RESOLU] télécharger un fichier

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : [RESOLU] télécharger un fichier

Re: télécharger un fichier

par dali0807 » 10 juin 2013, 13:48

c'est vrai tu as tout à fait raison =D>
au début j'ai cru que pour sécuriser mes fichiers je dois les placer dans un répertoire ftp déjà voici la description donné à ce répertoire par l'hébergeur :
/home/user/public_ftp/ - Ceci est le répertoire où aboutit l'accès FTP anonyme. Si l'accès FTP anonyme est autorisé, tous les fichiers de ce répertoire peuvent être téléchargés par n'importe qui
mais je pense qu'il y a d'autres méthodes pour sécuriser le répertoire contenant ces fichiers à télécharger sans avoir besoin d'une connexion ftp.
donc pour le moment je vais utiliser une connexion http.

Re: télécharger un fichier

par moogli » 09 juin 2013, 19:23

C'est un problèmes de droit, l'utilisateur FTP est différent de l'utilisateur qui fait tourner le serveur web et donc le second n'a pas l'endroit de lire le répertoire FTP.

Quand au reste tu compte utiliser une connexion FTP pour accéder au même serveur ? O_o


Je ne comprend as vraiment le problème de base.

Si le fichier doit être télécharger le sûr ton site il doit être dans en répertoire accessible.
Tu ne va pas faire une connexion FTP pour cela. Pour peux que le fichier soit il y a des chances que tu finisse par avoir un problème de taille mémoire ou de temps d'exécution.


@+

Re: télécharger un fichier

par dali0807 » 09 juin 2013, 16:36

merci moogli une autre fois pour ton aide et désolé pour ma réponse un peu retardé.
en fait le problème n'est pas dans la présence du fichier ni dans les droits d'accès à ce fichier, j'ai compris après avoir poster ce sujet que la seul moyen d'accéder à ce répertoire est d'utiliser les paramètres ftp (login et mot de passe), c'est la stratégie de l'hébergeur.
pour le moment j'ai placé les fichiers dans un répertoire http avec un fichier .htaccess pour un peu de sécurité en attendant trouver un moyen de faire un téléchargement en ftp.
déjà j'ai trouvé une méthode avec la fonction ftp_get mais le problème est que le répertoire de sauvegarde du fichier chez le client est standard et non choisi par lui même.
voici le code mais j'ai pas testé.
<?php
     
$local_file = 'C:/' . $_GET['filename']; // la destination du fichier téléchargé, donc c'est standard et non au choix de l'utilisateur
$server_file = $_GET['filename'];
$ftp_user_name='login';
$ftp_user_pass='password';
$ftp_server='server';

$conn_id = ftp_connect($ftp_server);
 

$login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass);


if (ftp_get($conn_id, $local_file, $server_file, FTP_ASCII)) {
    echo "Successfully written to $local_file\n";
} else {
    echo "There was a problem\n";
}
 

ftp_close($conn_id);

?>

Re: télécharger un fichier

par moogli » 07 juin 2013, 22:31

salut,


sur le principe le code est bon.

utilise la fonction is_readable pour voir si tu peux lire le fichier.

a priori tu ne peux pas tu peux le vérifier ainsi.

tu peux trouver l'utiliseur fileowner et les droits sur le fichier fileperms pour les afficher et t'en convaincre.


@+

télécharger un fichier

par dali0807 » 07 juin 2013, 16:50

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 [b]download.php[/b] : lien vers le fichier de téléchargement [b]download_files.php[/b]
<a href="download_files.php?filename=MABIA-REGION Software.rar" title="Download MABIA-REGION"><img src="images/download.png"/></a>

//Fichier [b]download_files.php[/b]
<?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