Enregister un fichier txt sur un serveur distant

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 : Enregister un fichier txt sur un serveur distant

Re: Enregister un fichier txt sur un serveur distant

par roseline » 01 avr. 2012, 15:57

Merci à tous, voici pour info le script complet qui fonctionne !
Dans un 1er temps, je charge les données de ma base "locale", j'en fait un fichier - dans ce cas - txt que j'enregistre dans un dossier distant avec un nom+date....

<?php
connexion au serveur local.....

// la variable qui va contenir les données CSV
$outputCsv = '';

$requete = "SELECT * FROM xx WHERE xx";
$sql = mysql_query($requete);
if(mysql_num_rows($sql) > 0)
{
$i = 0;

while($Row = mysql_fetch_array($sql))
{
$i++;

$ID = $Row[xx1];
$val = sprintf('%09u',$Row[xx2]*100);
$statut = $Row[xx3];
$cnumber = sprintf('%010u',$Row[xx4]);
$soc = $Row[xx5];
$code = $Row[xx6];
$country = $Row[xx7];
$outputCsv .= "$ID$val$statut$cnumber$soc$code$country\n";
}
}
else
exit('');

/// DONNEES
$StatutID = 'T';
$UserID = 'system';
$Date= date("Y-m-j H:i:s");

//// DEPOT DU FICHIER SUR SERVEUR DISTANT
session_cache_limiter('none'); //*Use before session_start()
session_start();

$ftp_user = ("xxuser");
$ftp_pass = ("xxpass");
$ftp_host = ("xxIPserveurdistant");
$filename= ("nomdufichieraenvoyer".date("YmdHis").".txt");

///// Connexion au serveur distant
$ftp_server = $ftp_host;
// Mise en place d'une connexion
$conn_id = ftp_connect($ftp_server) or die("Impossible de se connecter au serveur $ftp_server");
// Tentative d'identification
if (@ftp_login($conn_id, $ftp_user, $ftp_pass))
{
$file = tmpfile();
fwrite($file,"$outputCsv");
fseek($file,0);
ftp_fput($conn_id,"/nomdudossierdistant/$filename",$file,FTP_ASCII);
fclose($file);
}

// Fermeture de la connexion et du pointeur de fichier
ftp_close($conn_id);
//// Connexion au serveur distant

//echo $outputCsv;
exit();

//on ferme la connexion
mysql_close();
?>

Re: Enregister un fichier txt sur un serveur distant

par xTG » 14 mars 2012, 18:20

Oui il va falloir. ;)

Re: Enregister un fichier txt sur un serveur distant

par roseline » 14 mars 2012, 18:09

:-( désolée

En fait, le fichier est généré par le début du script...

C'est là que je me dis qu'il faut peut-être que je l'enregistre "temporairement" pour pouvoir l'envoyer... :oops:

Re: Enregister un fichier txt sur un serveur distant

par xTG » 14 mars 2012, 17:11

$outputCsv n'existe pas donc ?
Et comment veux-tu qu'on l'invente pour toi ? :?

Ton fichier peut provenir de tout un tas de sources différentes...
- Chemin fixe
- stocké en BDD
- transmis par méthode POST
- transmis par méthode GET
- ect

Re: Enregister un fichier txt sur un serveur distant

par roseline » 14 mars 2012, 14:41

Vérifies le chemin qu'il y a dans $outputCsv par rapport à l'emplacement de ton script.
C'est bien ce que je pensais.... à mon avis, y'a pas de chemin :-(

Une idée de comment je peux le faire?

Re: Enregister un fichier txt sur un serveur distant

par xTG » 14 mars 2012, 13:49

Vérifies le chemin qu'il y a dans $outputCsv par rapport à l'emplacement de ton script.

Re: Enregister un fichier txt sur un serveur distant

par roseline » 14 mars 2012, 12:59

Merci pour vos réponses!

Je teste.... et je n'y arrive toujours pas :-(
J'arrive bien à passer sur le serveur distant, dans le bon dossier, un fichier qui est sur le serveur "local" (voir code 1).
Par contre, je n'arrive pas à passer le fichier qui est généré dans le script (voir code 2)....

CODE 1
/// Ecriture du fichier
header("Content-disposition: attachment; filename=\"ACH0001".date("YmdHis").".txt\"");
header("Content-Type: application/force-download");
header("Content-Transfer-Encoding: application/vnd.ms-excel\n");
header("Pragma: no-cache");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0, public");
header("Expires: 0");

$file = 'ACH0001'.date("YmdHis").'.txt';
$fp = fopen($file, 'r');
///// Connexion au serveur distant
$ftp_server = $ftp_host;
// Mise en place d'une connexion
$conn_id = ftp_connect($ftp_server) or die("Impossible de se connecter au serveur $ftp_server");
// Tentative d'identification
if (@ftp_login($conn_id, $ftp_user, $ftp_pass))
{
ftp_put($conn_id, "Aller/ACH000120120314110114.txt", "ACH000120120314110114.txt", FTP_BINARY);
}
else
{
echo "Connexion impossible en tant que $ftp_user\n";
}

// Fermeture de la connexion et du pointeur de fichier
ftp_close($conn_id);
fclose($fp);
//// Connexion au serveur distant

echo $outputCsv;

exit();

CODE 2
/// Ecriture du fichier
header("Content-disposition: attachment; filename=\"ACH0001".date("YmdHis").".txt\"");
//header("Content-Type: application/force-download");
header("Content-Transfer-Encoding: application/vnd.ms-excel\n");
header("Pragma: no-cache");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0, public");
header("Expires: 0");

$file = 'ACH0001'.date("YmdHis").'.txt';
$fp = fopen($file, 'r');
///// Connexion au serveur distant
$ftp_server = $ftp_host;
// Mise en place d'une connexion
$conn_id = ftp_connect($ftp_server) or die("Impossible de se connecter au serveur $ftp_server");
// Tentative d'identification
if (@ftp_login($conn_id, $ftp_user, $ftp_pass))
{
//ftp_put($conn_id, "Aller/ACH0001".date("YmdHis").".txt", "ACH0001".date("YmdHis").".txt", FTP_BINARY);
//ftp_put($conn_id, "Aller/$file", "$file", FTP_BINARY);
//ftp_put($conn_id, "Aller/$file", "ACH0001".date("YmdHis").".txt", FTP_BINARY);
//ftp_put($conn_id, "Aller/".$file."", $file, FTP_BINARY);
ftp_put($conn_id, "Aller/ACH0001".date("YmdHis").".txt", $outputCsv, FTP_BINARY);
}
else
{
echo "Connexion impossible en tant que $ftp_user\n";
}

// Fermeture de la connexion et du pointeur de fichier
ftp_close($conn_id);
fclose($fp);
//// Connexion au serveur distant

echo $outputCsv;

exit();

Re: Enregister un fichier txt sur un serveur distant

par stealth35 » 13 mars 2012, 17:46

fait un copy ça sera plus simple

Re: Enregister un fichier txt sur un serveur distant

par xTG » 13 mars 2012, 17:43

ftp_fput() possède 4 paramètres et non un : http://fr2.php.net/ftp_fput ;)

Enregister un fichier txt sur un serveur distant

par roseline-2 » 13 mars 2012, 17:20

Bonjour,

Mon problème est le suivant: je génère un fichier txt (c'est tout bon, mon code de base télécharge le fichier txt sur mon ordinateur) qui doit être enregistré dans un dossier sur un serveur distant (là est mon problème).

Voici mon code ci-dessous.
Le test de connexion au serveur distant fonctionne!
Mais comment écrire mon fichier filename=\"ACH0001".date("YmdHis").".txt\" qui a comme contenu $outputCsv dans le dossier $downloadFolder = '/Aller/' sur le serveur distant $ftp_host ?

Merci d'avance :-)

<?php
include "config.inc.php";

// la variable qui va contenir les données CSV
$outputCsv = '';

///////////////////////// VALEURS Society ET SiteCode A CHANGER ////////////////////////////////////
$requete = "SELECT CheckID, CheckValor, StatutID, CustomerNumber, Society, SiteCode, SiteCountry FROM base WHERE StatutID = 'U' AND Society = '1' AND SiteCode = '000' AND SiteCountry = 'CH'";
$sql = mysql_query($requete);
if(mysql_num_rows($sql) > 0)
{
$i = 0;

while($Row = mysql_fetch_array($sql))
{
$i++;

$ID = $Row[CheckID];
$val = sprintf('%09u',$Row[CheckValor]*100);
$statut = $Row[StatutID];
$cnumber = sprintf('%010u',$Row[CustomerNumber]);
$soc = $Row[Society];
$code = $Row[SiteCode];
$country = $Row[SiteCountry];

$outputCsv .= "$ID$val$statut$cnumber$soc$code$country\n";

}

}
else
exit('');

/// DONNEES
$Date= date("Y-m-j H:i:s");


session_cache_limiter('none'); //*Use before session_start()
session_start();

$file = $outputCsv;
$ftp_user = ("Voucher");
$ftp_pass = ("redoute");
$ftp_host = ("212.243.55.109");
$downloadFolder = '/Aller/';
$filename= ("ACH0001".date("YmdHis").".txt");

/// Ecriture du fichier
header("Content-disposition: attachment; filename=\"ACH0001".date("YmdHis").".txt\"");
header("Content-Type: application/force-download");
header("Content-Transfer-Encoding: application/vnd.ms-excel\n");
header("Pragma: no-cache");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0, public");
header("Expires: 0");

$file = 'ACH0001'.date("YmdHis").'.txt';
$fp = fopen($file, 'r');
///// Connexion au serveur distant
$ftp_server = $ftp_host;
// Mise en place d'une connexion
$conn_id = ftp_connect($ftp_server) or die("Impossible de se connecter au serveur $ftp_server");
// Tentative d'identification
if (@ftp_login($conn_id, $ftp_user, $ftp_pass))
{
// Tente de charger le fichier $file
if (ftp_fput($outputCsv)
{
echo "Chargement avec succès du fichier \n";
}
else
{
echo "Il y a eu un problème lors du chargement du fichier\n";
}
}
else
{
echo "Connexion impossible en tant que $ftp_user\n";
}

// Fermeture de la connexion et du pointeur de fichier
ftp_close($conn_id);
fclose($fp);
//// Connexion au serveur distant

echo $outputCsv;

exit();

?>