PHP cULR foto uploaden
Ik had een vraag omtrent het uploaden van een foto m.b.v. cURL.
Als ik dit wil doen moet ik toch gewoon het veld naam invoeren met als content: @pathnaarfile?
Moet er verder nog iets gedaan worden? Want dit werkt niet 100%. Hij geeft nu op de externe controle pagina aan dat er geen $_FILES worden meegestuurd. Het enigste wat gebeurd is dat het path van de afbeelding word meegezonden via $_POST.
Ik hoop dat iemand snapt wat ik bedoel, en weet wat ik vergeet want dan kan ik vanavond weer verder. Ik zal vanavond ook wat relevante code erbij zetten want ik ben nu nog op mijn werk en kan dus niet bij de code.
Alvast bedankt, mvg Joost
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<?php
$url = 'http://*.nl/cURL/virt_form.php';
$fields = array(
'subscription[firstname]' => urlencode($_POST["subscription"]["firstname"]),
'subscription[lastname]' => urlencode($_POST["subscription"]["lastname"]),
'subscription[datafile]' => urlencode("@".$newfile),
'subscription[agree]' => urlencode($_POST["subscription"]["agree"])
);
foreach($fields as $key=>$value) { $fields_string .= $key.'='.$value.'&'; }
rtrim($fields_string, '&');
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_POST, count($fields));
curl_setopt($ch, CURLOPT_POSTFIELDS, $fields_string);
curl_setopt($ch, CURLOPT_BINARYTRANSFER, true);
$result = curl_exec($ch);
curl_close($ch);
?>
$url = 'http://*.nl/cURL/virt_form.php';
$fields = array(
'subscription[firstname]' => urlencode($_POST["subscription"]["firstname"]),
'subscription[lastname]' => urlencode($_POST["subscription"]["lastname"]),
'subscription[datafile]' => urlencode("@".$newfile),
'subscription[agree]' => urlencode($_POST["subscription"]["agree"])
);
foreach($fields as $key=>$value) { $fields_string .= $key.'='.$value.'&'; }
rtrim($fields_string, '&');
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_POST, count($fields));
curl_setopt($ch, CURLOPT_POSTFIELDS, $fields_string);
curl_setopt($ch, CURLOPT_BINARYTRANSFER, true);
$result = curl_exec($ch);
curl_close($ch);
?>
en dan op virt_form.php:
Code (php)
maar daar krijg ik geen output van, andere velden werken wel gewoon, en als ik print_r($_POST) doe, dan staat er: [datafile] => @image-upload/20120904-1346776324.JPG
Maar dit wil ik niet, ik wil de file op kunnen halen via $_FILES en niet via $_POST.
Gewijzigd op 04/09/2012 18:10:14 door Joost Van der Meijden
Bump
Dat is voor mij geen oplossing want ik kan niet bij de file waar de data heen verzonden word omdat deze op een andere website staat. Zijn er geen andere oplossingen?
Als ik Google op curl send files krijg ik al snel dit te zien: http://forums.devshed.com/php-development-5/php-curl-send-a-file-533233.html
Daarbij staat:
Code (php)
1
2
3
4
5
6
2
3
4
5
6
<?php
curl_setopt($ch, CURLOPT_PUT, true);
curl_setopt($ch, CURLOPT_INFILE, $putData);
curl_setopt($ch, CURLOPT_INFILESIZE, strlen($xml_request));
curl_setopt($ch, CURLOPT_FILE, $result_file);
?>
curl_setopt($ch, CURLOPT_PUT, true);
curl_setopt($ch, CURLOPT_INFILE, $putData);
curl_setopt($ch, CURLOPT_INFILESIZE, strlen($xml_request));
curl_setopt($ch, CURLOPT_FILE, $result_file);
?>
En dan denk ik... waar heb jij iets met FILE? Nergens.... dat zal wel eens kunnen schelen.
Kortom: even proberen (en daarna weer Googlen en/of hier vragen)