lococobra Posted December 2, 2009 Share Posted December 2, 2009 This is a bit complicated, I'm just hoping someone else has run into this and knows how to do it a different way or make it work. When sending a file as part of form information included in a cURL request, it appears you can not include a query string in the file name. Take a look at my example to see what I'm talking about. //This creates an example image with some text from $_GET['img'] you can try calling this directly to see what the output looks like if(isset($_GET['img'])){ $im = imagecreatetruecolor(120, 20); $text_color = imagecolorallocate($im, 255, 255, 255); imagestring($im, 3, 3, 3, $_GET['img'], $text_color); header('Content-type: image/jpeg'); imagejpeg($im); imagedestroy($im); exit; } //Show what was sent to the $_POST and $_FILES variables if(isset($_POST['showpost'])){ echo '<pre>'; print_r($_POST); print_r($_FILES); exit; } //Here's the part where we get in trouble... //This works //$imgURL = '@'.$_SERVER['SCRIPT_FILENAME']; //This doesn't work $imgURL = '@'.$_SERVER['SCRIPT_FILENAME'].'?img=true'; $data = array('showpost' => 'true', 'file' => $imgURL); //Now do the cURL request to show information about the file that was sent $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, 'http://'.$_SERVER["SERVER_NAME"].$_SERVER["REQUEST_URI"]); curl_setopt($ch, CURLOPT_POST, true); curl_setopt($ch, CURLOPT_POSTFIELDS, $data); curl_exec($ch); if(curl_errno($ch)) echo curl_error($ch); curl_close($ch); When using the section that says "This doesn't work" you'll get the cURL error "failed creating formpost data". Any suggestions? Quote Link to comment https://forums.phpfreaks.com/topic/183766-curl-sending-file-as-post/ Share on other sites More sharing options...
abazoskib Posted December 2, 2009 Share Posted December 2, 2009 what is $imgUrl supposed to look like? Quote Link to comment https://forums.phpfreaks.com/topic/183766-curl-sending-file-as-post/#findComment-970036 Share on other sites More sharing options...
lococobra Posted December 2, 2009 Author Share Posted December 2, 2009 abazoskib: something like this... "@/path/file.php?img=true" I just tried using sessions so I wouldn't have to pass the variable through GET, but it's not possible because something about starting the session makes declaring a content type (image/jpeg) not work. Quote Link to comment https://forums.phpfreaks.com/topic/183766-curl-sending-file-as-post/#findComment-970038 Share on other sites More sharing options...
lococobra Posted December 2, 2009 Author Share Posted December 2, 2009 There is probably no solution the way I was trying to do it. If anyone finds this thread and wants to know how I ended up solving it PM me. Quote Link to comment https://forums.phpfreaks.com/topic/183766-curl-sending-file-as-post/#findComment-970070 Share on other sites More sharing options...
salathe Posted December 2, 2009 Share Posted December 2, 2009 The path needs to be a path to an actual file on disk, not an URL, for cURL to find and pass along with the request. lococobra, unless the information is particularly sensitive it would be advisable to post your solution in public. Quote Link to comment https://forums.phpfreaks.com/topic/183766-curl-sending-file-as-post/#findComment-970076 Share on other sites More sharing options...
lococobra Posted December 2, 2009 Author Share Posted December 2, 2009 You basically said the answer I came up with. Trying to do the entire operation in one step by using a url instead of a real file will not work. Instead this is what I did. Rather than try to load the url directly in to cURL as a file, run a cURL operation that calls the isset($_GET['img']) section of the code. Then instead of just displaying the image, save it wherever. At that point you'll have a real physical file you can pass to cURL. After that you can delete the file if you want. I've already changed the code a lot but it's not all that hard to figure out, it's just not as nice as if you could load a url like I was trying to do. Quote Link to comment https://forums.phpfreaks.com/topic/183766-curl-sending-file-as-post/#findComment-970135 Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.