Téléchargement fichier protégé


webmasterlamogere
WRInaute passionné
WRInaute passionné
 
Messages: 1874
Inscription: 17 Déc 2006

Message le Ven Jan 25, 2008 20:04

la commande attend un fichier local.

toto2525
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 349
Inscription: 20 Sep 2007

Message le Lun Jan 28, 2008 14:22

Est-ce que tu parles de cette erreur :
File 'Resource id #5' not found (Errcode: 2)


Si oui, c'est quoi ce fichier "'Resource id #5" et il doit se trouver ou ?


webmasterlamogere
WRInaute passionné
WRInaute passionné
 
Messages: 1874
Inscription: 17 Déc 2006

Message le Lun Jan 28, 2008 14:39

il y a deux solutions :
- le fichier indiqué n'existe pas
- il faut utiliser la commande sans indiquer 'LOCAL'

L'option LOCAL est a ajouter si le serveur mysql ne se trouve pas sur la même machine que le serveur apache. Si tu fais le test en local les deux sont normalement au même endroit.

toto2525
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 349
Inscription: 20 Sep 2007

Message le Lun Jan 28, 2008 15:06

Merci webmasterlamogere.

Toujours ces foutus erreurs : c'est pas possible !

J'ai téléchargé sur mon ordinateur le fichier en .csv que je veux mettre dans ma table, j'importe ce fichier via le formulaire d'importation de mysql "Format du fichier d'importation" => "CSV via LOAD DATA" et tout se passe bien, les données sont chargées dans la table : tout fonctionne parfaitement ! Je fais un copier-coller de cette requête et je remplace le LOAD DATA LOCAL INFILE 'C:\\PROGRA~1\\EasyPHP\\\\tmp\\phpEA39.tmp' par LOAD DATA LOCAL INFILE '$file' le $file correspond à l'url distante ou je souhaite télécharger ces données du type http://login:password@www.site-web.com/ ... ngs/etc.... et là ça ne marche plus j'ai cette erreur :
Erreur de syntaxe près de '' à la ligne 1


Voici ma requête :
$result = mysql_query("LOAD DATA LOCAL INFILE '$file' INTO TABLE `$tableName` FIELDS TERMINATED BY ',' ESCAPED BY '\\\\' LINES TERMINATED BY '\\r\\n' IGNORE 1 LINES (** nom de mes champs séparés par des virgules du style : champs1, champs2, champs3, etc... **)") or die (mysql_error());


Voyez-vous quelque chose qui va pas ?


webmasterlamogere
WRInaute passionné
WRInaute passionné
 
Messages: 1874
Inscription: 17 Déc 2006

Message le Lun Jan 28, 2008 16:10

c'est normal car il faut récupérer le fichier en local d'abord :
Code: Tout sélectionner
file_put_contents($fichierlocaltmp, file_get_contents($fichierdistantprotege));

toto2525
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 349
Inscription: 20 Sep 2007

Message le Lun Jan 28, 2008 16:43

Tu places ce bout de code ou ?

$fichierlocaltmp fait référence à quel emplacement ou chemin ?


webmasterlamogere
WRInaute passionné
WRInaute passionné
 
Messages: 1874
Inscription: 17 Déc 2006

Message le Lun Jan 28, 2008 16:57

$fichierlocaltmp fait référence à un fichier local (sur ton serveur)
tu peux mettre par exemple :
Code: Tout sélectionner
$fichierlocaltmp = 'fichier.csv';  // fichier dans le répertoire courant
$fichierdistantprotege = 'http://login:password@www.site-web.com/Download_Listings/etc....';
file_put_contents($fichierlocaltmp, file_get_contents($fichierdistantprotege));
$result = mysql_query("LOAD DATA LOCAL INFILE '$fichierlocaltmp' INTO TABLE `$tableName` FIELDS TERMINATED BY ',' ESCAPED BY '\\\\' LINES TERMINATED BY '\\r\\n' IGNORE 1 LINES (** nom de mes champs séparés par des virgules du style : champs1, champs2, champs3, etc... **)") or die (mysql_error());
unlink($fichierlocaltmp); // supprime le fichier temporaire

toto2525
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 349
Inscription: 20 Sep 2007

Message le Lun Jan 28, 2008 17:07

C'est bon j'ai trouvé, ça marche parfaitement, un grand merci webmasterlamogere pour ton aide et ta patience, tu peux pas imaginer à quel point je suis content :lol: :lol: d'avoir ce bout de script qui marche...

toto2525
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 349
Inscription: 20 Sep 2007

Message le Jeu Jan 31, 2008 17:15

Une petite question : j'utilise la fonction PHP readfile (par exemple : readfile('http://www.site.com/image.jpg'); ) dans un de mes scripts mais parfois si le serveur sur lequel je souhaite télécharger le fichier ne fonctionne pas ou est indisponible la fonction PHP readfile renvoie une belle erreur avec l'url du fichier que je souhaitai télécharger, comment faire pour qu'en cas d'erreur ou d'insdiponibilité du serveur je puisse afficher mon propre message d'erreur ?


webmasterlamogere
WRInaute passionné
WRInaute passionné
 
Messages: 1874
Inscription: 17 Déc 2006

Message le Jeu Jan 31, 2008 17:22

la solution est là : -http://fr.php.net/readfile
Code: Tout sélectionner
if (@readfile('http://www.site.com/image.jpg') === false) {
  echo 'ton message d'erreur';
}

toto2525
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 349
Inscription: 20 Sep 2007

Message le Ven Fév 01, 2008 12:25

Merci beaucoup webmasterlamogere c'est exactement que je cherchais :lol:

Par contre, dans le message d'erreur
echo 'ton message d'erreur';

On peut mettre que du texte et pas de code html du style
echo '<p align="center"><font face="Arial" size="3">Un problème technique nous empêche d'afficher l'image, merci de ré-essayer ultérieurement !</font>';


Vois-tu une solution pour que le message d'erreur prenne en compte ce code html ?


webmasterlamogere
WRInaute passionné
WRInaute passionné
 
Messages: 1874
Inscription: 17 Déc 2006

Message le Ven Fév 01, 2008 12:57

le principe du php c'est bien de générer une page html. tu peux donc bien mettre du code html dans l'echo. Il faut juste bien penser à mettre un \' à la place de ' dans le texte :
Code: Tout sélectionner
echo '<p align="center"><font face="Arial" size="3">Un problème technique nous empêche d\'afficher l\'image, merci de ré-essayer ultérieurement !</font>';

tu peux aussi écrire comme ça :
Code: Tout sélectionner
if (@readfile('http://www.site.com/image.jpg') === false) {
?>
  <p align="center"><font face="Arial" size="3">Un problème technique nous empêche d'afficher l'image, merci de ré-essayer ultérieurement !</font>
<?php
}

djazair_83
Nouveau WRInaute
Nouveau WRInaute
 
Messages: 1
Inscription: 26 Aoû 2009

Re: Téléchargement fichier protégé

Message le Mer Aoû 26, 2009 14:53

Bonjour à tous.

J'ai essayé de suivre le code et voici ce que j'ai mis :

$fichierlocaltmp = 'fichier.csv'; // fichier dans le répertoire courant

$result = mysql_query("LOAD DATA LOCAL INFILE '$fichierlocaltmp' INTO TABLE `client` FIELDS TERMINATED BY ',' ESCAPED BY '\\\\' LINES TERMINATED BY '\\r\\n' IGNORE 1 LINES (clccli, nosect, raison, nom, tel)") or die (mysql_error());
//unlink($fichierlocaltmp); // supprime le fichier temporaire

Et j'ai l'erreur suivante :

File 'client_secteur_3.csv.csv' not found (Errcode: 2)

SVP plait merci de m'aider je galère grave


forty
WRInaute passionné
WRInaute passionné
 
Messages: 1702
Inscription: 30 Oct 2008

Re: Téléchargement fichier protégé

Message le Mer Aoû 26, 2009 15:14

essaye de mettre cette ligne à la place de l'ancienne :
Code: Tout sélectionner
$fichierlocaltmp = dirname(__FILE__) . '/fichier.csv'; // fichier dans le répertoire courant

Téléchargement fichier protégé

Si vous avez aimé cette discussion, partagez-la sur vos réseaux sociaux préférés :

Lectures recommandées sur ce thème :



Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 1 invité