• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Probleme mit CURL

Status
Für weitere Antworten geschlossen.

marlin-b

Neues Mitglied
Hallo Community,
ich möchte im Moment eine Datei von meinem Server an einen anderen schicken. (Kein FTP)
Wenn ich jedoch die Datei an z.B. http://domain.tld/ordner/file.php schicken möchte, muss ich im code "curl_setopt($ch, CURLOPT_UPLOAD, 1);" schreiben.
Wenn ich diese Zeile geschrieben habe, öffnet "er" die Seite "http://domain.tld/"... Sonst nicht.
Ein weiteres Problem ist, dass der Server an den ich die Datei schicken möchte immer error 405 (Methode Not Allowed) ausgibt.

Hier ist mein Code:
PHP:
	error_reporting(E_ALL);
	$filename	='test.exe'; 
	$sizefile 	= filesize($filename);
    $file		= fopen($filename, "r"); 
    $ch 		= curl_init('http://domain.tld/ordner/send.php');   
    curl_setopt($ch, CURLOPT_POST, true); 
	curl_setopt($ch, CURLOPT_UPLOAD, 1);
	curl_setopt($ch, CURLOPT_INFILE, $file);
	curl_setopt($ch, CURLOPT_INFILESIZE, filesize($filename)); 
	curl_setopt($ch, CURLOPT_POSTFIELDS, "german=1&file1x=@$file");
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
	curl_exec($ch); 
	var_dump( curl_exec( $ch ) );
    curl_close($ch); 
	fclose($file);
 
hmpf tested around ^^

also bei mir hats einfach so geklappt (warum auch immer)
PHP:
    $filename='testWordDoc.doc';
    $file=getcwd().'\\'.$filename;

    echo $file;
    
    $ch = curl_init('http://myurl.com/recieve_posted.php');  
    curl_setopt($ch, CURLOPT_POSTFIELDS, array('file'=>"@$file",'testkey'=>'test value'));
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    $postResult = curl_exec($ch);
    curl_close($ch);
    print "$postResult";

Der Pfad muss absolu sein!

//EDIT

ansonsten, so sieht praktisch nen post request aus von nem mulipart form (vlt. hilfts dir)
========================
POST /path/to/script.php HTTP/1.0
Host: example.com
Content-type: multipart/form-data, boundary=AaB03x
Content-Length: $requestlen

--AaB03x
content-disposition: form-data; name="field1"

$field1
--AaB03x
content-disposition: form-data; name="field2"

$field2
--AaB03x
content-disposition: form-data; name="userfile"; filename="$filename"
Content-Type: $mimetype
Content-Transfer-Encoding: binary

$binarydata
--AaB03x--
==========================
 
Danke für deine Bemühungen. Ich weiß jetzt woran es liegt:
Ich habe das Formular mir einfach als HTML-Code gebastelt und festgestellt, dass dieser Error nur kommt wenn enctype="application/x-www-form-urlencoded". Das ist jedoch der standart von CURL.
Wie kann man CURL so ändern, dass es "multipart/form-data" verwendet?
 
Status
Für weitere Antworten geschlossen.
Zurück
Oben