Bonjour,

quelqu'un saurait comment envoyer un fichier à un formulaire via une requête POST php ?

pour plus de détails j'aimerais envoyer un fichier texte à ce formulaire :

http://cental.fltr.ucl.ac.be/treetagger/index.html

et récupérer après le lien du fichier résultat qu'il nous affiche

voila mon code, pourtant j'étais sur que ça devrait marcher :

TreeTagger.php

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
<?php
 
class TreeTagger {
 
	private $url;
	private $files = array();
	private $headers = array();
	private $boundary;
 
	public function __construct( $url ) 
	{
		$this->url = $url;
		$this->boundary = md5( microtime() );
 
		$this->setHeader( 'Content-Type', 'application/x-www-form-urlencoded' );
	}
 
	public function setFile( $name, $path, $mime ) 
	{
		$contentType = 'multipart/form-data, boundary=' . $this->boundary;
		$this->setHeader( 'Content-Type', $contentType );
		$this->files[ $name ] = array( 
			'path' => $path,
			'mime' => $mime );
	}
 
	public function setHeader( $name, $value ) {
		$this->headers[ $name ] = $value;
	}
 
	public function send() {
 
		$headers = '';
		foreach( $this->headers as $name => $value ) 
		{
			$headers .= $name . ': ' . $value . "\r\n";
		}
 
		$content = '--' . $this->boundary . "\n";
 
		foreach( $this->files as $key => $file ) 
		{
 
			$content .= 'content-disposition: form-data; name="' . $key . '"; filename="' . basename($file['path']) . '"' . "\n";
			$content .= 'Content-Type: ' . $file['mime'] . "\n\n";
			$content .= file_get_contents( $file['path'] );
			$content .= "\n" . '--' . $this->boundary . "\n";
			$content .= 'content-disposition: form-data; name="submit"' . "\n\n";
			$content .= 'Envoyer';
			$content .= "\n" . '--' . $this->boundary . '--'. "\n";
		}
 
		$headers.= 'Content-Length: ' . strlen( $content );
 
		$context = stream_context_create( 
			array( 'http' => array( 'user_agent' => 
			'Mozilla/5.0 (Windows; U; Windows NT 5.1; fr; rv:1.8.1) Gecko/20061010 Firefox/2.0',
									'method' => 'POST',
									'content' => $content,
									'header' => $headers ) ) );
 
		return file_get_contents( $this->url, false, $context );	
	}
}
 
?>

et notre class d'instanciation :


Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
<?php
 
require_once 'TreeTagger.php';
 
$lem = new TreeTagger('http://cental.fltr.ucl.ac.be/treetagger/index.html');
$lem->setFile( 'file_to_tag', 'C:\wamp\www\eSearch\texte.txt', 'text/plain' );
$result = $lem->send();
 
var_dump($result);
 
?>

voila ce que m'affiche ce code :



il lui faut juste un autre pas, cliquer sur envoyer

une idée svp ? normalement ça devrait marcher ...

et comme toujours un grand merci d'avance