CommentCaMarche
Recherche
Posez votre question Signaler

Upload fichier DD vers serveur distant

thunder - Dernière réponse le 2 nov. 2008 à 23:27
Bonjour,
j'ai deja posté ce message dans le forum programmation (merci a fred d'avoir essayé), mais j'ai l'impression que pour traiter du PHP c'est ici (le PHP peut etre la cause de mon pb)
j'essaie d'uploader un fichier de mon DD vers un serveur en PHP a partir d'une page html.
le site est hebergé chez lycos.
mon script fonctionne tres bien si j'upload vers le serveur lycos mais pas si je veux l'uploader vers un autre serveur...
j'utilise la commande FTP_PUT.
le script reste le meme entre les deux test, seul les parametres de connexion change. Pour simplifier le test, il n'y a pas de repertoire de destination (copie sous la racine).
si upload vers lycos : ok fichier sous la racine
si upload vers autre serveur : la page html bloque (page blanche) et je retrouve le fichier sur serveur mais vide (juste le nom).
quelqu'un a t'il une ID du pourquoi ???
Merci
Lire la suite 
Réponse
+1
moins plus
Bonjour à tous,
J'ai un problème similaire, j'ai un script d'upload avec ftp_put qui fonctionne pour des fichiers de moins de 16 Mo mais dès que je dépasse cette taille, le fichier uploadé sur le ftp a une taille de 0 Mo. je suis sur un serveur mutualisé OVH dont le upload_max_filesize est 16 Mo. Cela est il lié?? Ya t il un moyen de mettre en place un systeme d'upload via formulaire pour des fichiers depassant la taille limite quand on a pas acces au php.ini?
Si quelqu'un a la réponse, j'offre beaucoup de gratitude
Hasta luego
choppinet- 21 juil. 2008 à 12:43
Cela m'intéresserais beaucoup si vous pouviez me fournir le source de votre script d'upload avec ftp_put qui fonctionne pour des fichiers de moins de 16 Mo.
La limitation de 16 Mo de me gène nullement, et je n'arrive pas à réaliser ce script.
Merci d'avance
Eric
Répondre
Ajouter un commentaire
Réponse
+0
moins plus
Parce que le 1er serveur web est configuré pour accepter les requetes FTP et pas le second.

En tout cas, cherche de ce côté...
Ajouter un commentaire
Réponse
+0
moins plus
j'y avais pensé aussi,
mais dans ce cas pourquoi est ce que je peux uploader un fichier de mon DD vers ce meme second serveur a partir du site net2ftp ?
Ajouter un commentaire
Réponse
+0
moins plus
ok ... donc c'est pas ça.

Le fait que le fichier se créé mais qu'il soit vide ça me fait penser aux sessions, tu en utilises ?
Et quelle taille fait le fichier que tu essaies d'uploader ?
Ajouter un commentaire
Réponse
+0
moins plus
Je ne m'y connais pas encore trop en gestions de serveur et compagnie, mais le problême ne viendrait t'il pas du temps maximum d'executions des scripts qu'utilisent certains hébergeurs (free par exemple limite à 30 secondes leur execution si je me rappel bien)
Ajouter un commentaire
Réponse
+0
moins plus
J’ai pas le script devant les yeux, mais j'utilise bien des variables session qui me servent essentiellement a identifier un visiteur.
Pour le moment elles n'interviennent pas dans le bout de script php qui sert a uploader.

j'ai essayé plusieurs tailles, mais même les plus petits ne passent pas (fichier txt de quelques octets). je ne pense pas que le temps de connexion et de transfert soit la cause étant donné que le même fichier uploadé avec net2ftp met a peine 5 s.

c'est vrai que ça ressemble bcp a une boucle meme si je n'en utilise pas.
le code se décompose comme ceci ( je posterais le code cet aprem ) : selection du fichier sur dd => connexion au serveur => envois au serveur => fermeture de la connexion.

Si je désactive l'envoi au serveur, tous se passe bien, la connexion semble établie. dès que j'essaye de faire le FTP_PUT blocage au bout de 20 a 30s et j'ai un fichier vide sur serveur.

Merci de votre aide.
Ajouter un commentaire
Réponse
+0
moins plus
voici donc le script :


<FORM action="" method="POST" ENCTYPE="multipart/form-data">

<INPUT name="fichier" type="file" >
<INPUT name="valider" type="submit" value="valider">
</FORM>

<?

if(isset($_POST['valider']) && $_FILES['fichier']['tmp_name'] !="") envoi_ftp();

function envoi_ftp() {
$ftp_server='XXXX.YYYY.ZZZ';
$ftp_user_name='toto';
$ftp_user_pass='pwd';

echo " <br>Mise en place d'une connexion basique";
$conn_id = ftp_connect($ftp_server) or die("<br>Impossible de se connecter au serveur $ftp_server");

echo " <br>Identification avec un nom d'utilisateur et un mot de passe ";
$login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass);

echo " <br>Verification de la connexion ";
if ((!$conn_id) || (!$login_result))
{
echo "<br>La connexion FTP a echoue !<br>";
echo "<br>Tentative de connexion au serveur $ftp_server pour l'utilisateur $ftp_user_name ";
exit;
}
else {
echo "<br>Connexion au serveur $ftp_server, pour l'utilisateur $ftp_user_name";
}

$fichier = $_FILES['fichier']['name'];
$taille = $_FILES['fichier']['size'];
$tmp = $_FILES['fichier']['tmp_name'];
$type = $_FILES['fichier']['type'];
$erreur = $_FILES['fichier']['error'];

echo "<br>Nom originel => $fichier ";
echo "<br>Taille => $taille ";
echo "<br>Adresse temporaire sur le serveur => $tmp ";
echo "<br>Type de fichier => $type ";
echo "<br>Code erreur => $erreur. ";

$fichier = $_FILES['fichier']['name'];
$source_file = $_FILES['fichier']['tmp_name'];
$destination_file = '/'.$fichier;

echo " <br>Chargement d'un fichier ";
$upload = ftp_put($conn_id, $destination_file, $source_file, FTP_BINARY);

echo " <br>Verification du status du chargement ";
if (!$upload)
{
echo "<br>Le chargement FTP a echoue";
}
else {
echo "<br>Chargement de $source_file vers $ftp_server en tant que $destination_file";
}
// Fermeture du flux FTP
ftp_close($conn_id);
}
?>
Ajouter un commentaire
Réponse
+0
moins plus
Bonjour,


Moi aussi j'ai le meme probleme, mon fichier "donnees.csv" de mon DD est bien telecharger sur mon FTP de free, mais il reste desesperement vide.

Voici mon code :

// Mise en place d'une connexion basique
$ftp_server="ftpperso.free.fr";
$ftp_user_name = "moil";
$ftp_user_pass = "paspas";

$conn_id = ftp_connect($ftp_server);

// Identification avec un nom d'utilisateur et un mot de passe
$login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass);

// Vérification de la connexion
if ((!$conn_id) || (!$login_result)) {
echo "La connexion FTP a échoué !";
echo "Tentative de connexion au serveur $ftp_server pour l'utilisateur $ftp_user_name<br>";
exit;
} else {
echo "Connexion au serveur $ftp_server, pour l'utilisateur $ftp_user_name<br>";
}

// Chargement d'un fichier


$dest = "../domotique/donnees/donnees.csv"; // endroit ou je veux copier mon fichier donnees.csv sur le serveur ftp de free

$nom_fichier = "..//domotique/donnees/donnees.csv"; // mon fichier donnees.csv sur mon DD
$fp = fopen ($nom_fichier,"w"); // je suis obliger de l'ouvrir en ecriture en local sinon ça marche pas et pour recuperer la variable $fp


$upload = ftp_fput($conn_id, $dest, $fp, FTP_ASCII );


// Vérification du status du chargement
if (!$upload) {
echo "Le chargement FTP a échoué!<br>";
} else {
echo "Chargement de $nom_fichier vers $fp en tant que $dest";
}

// Fermeture du flux FTP
ftp_close($conn_id);
fclose($fp);
enfer- 2 nov. 2008 à 23:27
ton fichier doit etre bien sauvegardé dans le premier serveur avant d'etre transferer
tu ne peut pas envoyer un fichier temporaire
Répondre
Ajouter un commentaire
Réponse
+0
moins plus
Bonjour,

as tu aussi essayé en mode binaire ?
met il quand meme que la connexion est etablie ?
visuellement, que se passe t'il ? page bloque etc...
Ajouter un commentaire
Ce document intitulé «  upload fichier DD vers serveur distant  » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes.

Le fait d'être membre vous permet d'avoir des options supplémentaires.