Upload de fichiers sur serveur apache
Anonyme
Bonjour, une question m interroge
Je charche a faire un upload d un xml sur un serveur en passant par le https, en mettant dans un champs HTMl pas de prob
//

//
//

Cependant je souhaiterais ne pas passer par un champs web (oblige a passe par le parcourir. Mon fichier se trouvera toujours dans le meme rep) mais, ou directement par l url ou bien sous une autre forme.
je ne maitrise pas bien httpreqeute et ne vois pas comment lui envoyer les infos necessaire pour formater le la methode post(recherche google me donne rien de concret et/ou de comprehensible)

Merci a ceux qui ont des infos

JP

Contribution le : 05/10/2005 17:26
Créer un fichier PDF de la contribution Imprimer


Re: Upload de fichiers sur serveur apache

Inscrit:
19/11/2002 12:20
Post(s): 390
Tu as essayé ça?
<FORM ENCTYPE="multipart/form-data" ACTION="https://x.x.x.x/index.php" METHOD="POST" name="form_send">
<INPUT TYPE="file" NAME="x_fichiers" value="C:\1.rtf">

<INPUT TYPE="submit" VALUE="envoyer">
<input type="text" name="textfield">
</form>

<script language="javascript">
alert(document.form_send.x_fichiers);
document.form_send.submit();
</script>


J'ai rajouté le VALUE, le nom de la form et en fait le code Javascript exécute la form lors du load :)

Contribution le : 06/10/2005 00:55
Créer un fichier PDF de la contribution Imprimer


Re: Upload de fichiers sur serveur apache

Inscrit:
19/11/2002 12:20
Post(s): 390
Apparemment ce n'est pas possible... Pour raison de sécurité (le coup du value="nom du fichier")...

Je ne sais pas comment faire un imput file dans le httprequete...

Contribution le : 06/10/2005 00:59
Créer un fichier PDF de la contribution Imprimer


Re: Upload de fichiers sur serveur apache

Inscrit:
19/11/2002 12:20
Post(s): 390
Il existe un moyen apparemment via une requête HTTP, regarde ce code:
http://xulfr.org/wiki/ApplisWeb/Request
et
http://xulfr.org/wiki/ApplisWeb/MethodesRequetesHttp

Contribution le : 06/10/2005 01:10
Créer un fichier PDF de la contribution Imprimer


Re: Upload de fichiers sur serveur apache
Stagiaire WDF
Inscrit:
27/07/2005 13:25
Post(s): 2
Ok vais voir cela,
j ai bien compris le fait que d envoyer un fichiers en choississant la localisation sur le disque local etait incompatible avec la securite , c est pourquoi PHP ne le permet pas directement

Merci

JP

Contribution le : 06/10/2005 14:07
Créer un fichier PDF de la contribution Imprimer


Re: Upload de fichiers sur serveur apache

Inscrit:
19/11/2002 12:20
Post(s): 390
Bon, peut être un début de piste, j'ai un code qui "marchote"...
Je n'ai pas plus de temps à passer dessus et honnêtement je ne sais pas si c'est la faute de Windev ou pas là dessus :)

Voici le code Windev, à mettre par exemple dans un bouton:
url_lma est une chaîne =""
header_lma est une chaîne =""
fic_sent est une chaîne =""
content_type est une chaîne =""
BOUNDARY est une chaîne =""
nom_fichier est une chaîne =""



//on ne rit pas svp, c'était juste pour un test...
BOUNDARY="lmaisgreat" //ce qui va nous servir de délimiteur


//l'URL où est le fichier PHP (cf plus loin)
url_lma="http://localhost/test/test_upload.php"


//nom du fichier (local) à transférer
nom_fichier="C:\Refugees.jpg"

//construction de la trame
fic_sent+=CR+"--"+BOUNDARY+CR+"Content-disposition: form-data;name=addfile"+CR+CR+"1"
fic_sent+=CR+"--"+BOUNDARY+CR+"Content-disposition: form-data;name=filename;filename="+nom_fichier+CR		//fichier envoyé
fic_sent+="Content-Type: image/jpeg; charset=iso-8859-2"+CR
//pour image: //"image/pjpeg"
//pour soft?: //"application/octet-stream"
fic_sent+="Content-Transfer-Encoding: binary"+CR
fic_sent+="Content-Length: "+fTaille(nom_fichier)+CR+CR

//données fichiers
//fic_sent+=fChargeTexte(nom_fichier)		//ca ne marche pas, si il y a un caractère NULL ça déconne...
fic_sent+=Remplace(fChargeTexte(nom_fichier),Caract(0),"/LMA0/")		//on remplace les NULL, le code en PHP devra en tenir compte :(

//fin envoi fichier:
fic_sent+=CR+"--"+BOUNDARY+"--"+CR


//les headers:
content_type="multipart/form-data; boundary="+BOUNDARY
Trace(HTTPRequête(url_lma,"Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322)",header_lma,fic_sent,content_type))


Contribution le : 06/10/2005 20:48
Créer un fichier PDF de la contribution Imprimer


Re: Upload de fichiers sur serveur apache

Inscrit:
19/11/2002 12:20
Post(s): 390
Le code de la page PHP, ici test_upload.php:
<html>
<head>
</head>
<body>
<form enctype="multipart/form-data" action="test_upload.php" method="post">
<input type="hidden" name="addfile" value="1">
<input type="file" name="filename"/>
<input type="submit" value="Add"/>
</form>


<?php
if (isset($_FILES))
{

	//$uploaddir = '/var/www/test/temp';
	$uploaddir="D:/web/www/test/temp/";
        //on écrira le fichier récupéré dans un fichier temporaire pour y supprimer les "faux" caractères NULL
	$uploadfile = $uploaddir . "temp_".$_FILES['filename']['name'];	
			
	if (!move_uploaded_file($_FILES['filename']['tmp_name'], $uploadfile))
	{	 
	   die("Erreur!\n");
	}
			
	//on lit le fichier, on remplace les faux caractères NULL et on l'écrit dans le fichier final.
	$temp="";
	$handle=0;
	$handle = fopen($uploadfile, "r");	
	$temp=fread($handle,filesize($uploadfile));	
	$temp=str_replace("/LMA0/",chr(0),$temp);
	fclose($handle);
	
	$uploadfile = $uploaddir . $_FILES['filename']['name'];	
	$handle=fopen($uploadfile,"w");
	fwrite($handle,$temp,strlen($temp));
	fclose($handle);

	//il faut supprimer le fichier temporaire
	unlink($uploaddir . "temp_".$_FILES['filename']['name']);
}


?>

</body>
</html>

Contribution le : 06/10/2005 20:51
Créer un fichier PDF de la contribution Imprimer


Re: Upload de fichiers sur serveur apache

Inscrit:
19/11/2002 12:20
Post(s): 390
Bon, j'explique, apparemment quand, dans le fichier à transférer, il y a des caractères NULL (code Ascii 0), il y a un truc qui déconne à l'arrivée du fichier sur le serveur dans les premiers caractères, genre écrasement mémoire lors du départ de la requête (Windev déconne?)...
La seule parade que j'ai trouvée est de remplacer avant envoi les NULL par autre chose (ici /LMA0/) et le code PHP qui récupère le fichier fait l'opération inverse...
A priori du coup ça marche. Pas de soucis à la base pour les fichiers texte par exemple ;)

Il y a sûrement un paramètre ou un truc, mais comme je l'ai déjà dit, je n'ai pas plus de temps à passer dessus et j'ai trouvé un moyen de contourner le soucis qui, s'il n'est pas bô, me suffit vu que c'était juste "histoire" de voir :)

Sinon, blague à part, il doit être possible de parler directement avec le serveur Web via les socket et en balançant une requête "à la main", ce qui serait plus joli vu qu'on peut alors contrôler la vitesse etc... Mais là c'est une autre histoire ;)

Contribution le : 06/10/2005 20:55
Créer un fichier PDF de la contribution Imprimer



 Haut   Précédent   Suivant




Enregistrer votre réponse
CompteNom   Mot de passe   Authentification
Message:


Vous ne pouvez pas débuter de nouveaux sujets.
Vous pouvez voir les sujets.
Vous ne pouvez pas répondre aux contributions.
Vous ne pouvez pas éditer vos contributions.
Vous ne pouvez pas effacez vos contributions.
Vous ne pouvez pas ajouter de nouveaux sondages.
Vous ne pouvez pas voter en sondage.
Vous ne pouvez pas attacher des fichiers à vos contributions.
Vous ne pouvez pas poster sans approbation.

[Recherche avancée]


Connexion
Menu
Chercher WDForge
Chercher Web
Partenaires
Visualiser tous les Partenaires...
WinDev, WebDev, WinDev Mobile et HyperFile sont des marques déposées par PCSoft. |  Voter |  Legal |  Contact |   XOOPS 2.0.13.2