Drukowana wersja tematu

Kliknij tu, aby zobaczyć temat w orginalnym formacie

Forum PHP.pl _ Przedszkole _ [PHP]wysyłanie plików przez curl

Napisany przez: olszam 9.07.2019, 08:47:12

Czy tak powinno wyglądać wysyłanie plików przez curl?

  1. function post_data2($site,$data,$reffer){
  2.  
  3. $datapost = curl_init();
  4. $headers = http://www.php.net/array('Referer: '.$reffer,
  5. "Content-Type" => "multipart/form-data");
  6.  
  7. curl_setopt($datapost, CURLOPT_RETURNTRANSFER, TRUE);
  8. curl_setopt($datapost, CURLOPT_URL, $site);
  9. curl_setopt($datapost, CURLOPT_ENCODING, 'gzip, deflate');
  10. curl_setopt($datapost, CURLOPT_TIMEOUT, 40000);
  11. curl_setopt($datapost, CURLOPT_HEADER, TRUE);
  12. curl_setopt($datapost, CURLOPT_HTTPHEADER, $headers);
  13. curl_setopt($datapost, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']);
  14. curl_setopt($datapost, CURLOPT_POST, TRUE);
  15. curl_setopt($datapost, CURLOPT_POSTFIELDS, $data);
  16. curl_setopt($datapost, CURLOPT_COOKIEFILE, "cookie.txt");
  17.  
  18. http://www.php.net/ob_start();
  19. $r = curl_exec ($datapost);
  20. http://www.php.net/ob_end_clean();
  21. curl_close ($datapost);
  22. http://www.php.net/unset($datapost);
  23. return $r;
  24.  
  25. }
  26.  
  27. $file = http://www.php.net/array('file'=>'@'.http://www.php.net/realpath('plik').';filename=plik',"name"=>"FFFXXX@plik");
  28. post_data2("......",$file,'......'.http://www.php.net/substr($htmltest->find('input[id=ID_ADD]')[0]->onclick,22,-2));


Wykorzystałem gotową funkcję z której korzystam do ściągania danych. Pytam bo jak daję na echo post_data2 to nie wygląda tak jakbym tego oczekiwał smile.gif.

Napisany przez: aras785 9.07.2019, 23:49:07

Cześć,

napisałem działający kod:

curl.php

  1. /**
  2.  * @author aras785
  3.  * @param string $url
  4.  * @param array $data
  5.  * @param string $referer
  6.  * @return string
  7.  */
  8. function sendPostDataUsingCurl(string $url, http://www.php.net/array $data, string $referer): string
  9. {
  10.  
  11. $ch = curl_init();
  12. curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
  13. curl_setopt($ch, CURLOPT_ENCODING, 'gzip, deflate');
  14. curl_setopt($ch, CURLOPT_TIMEOUT, 40000);
  15. curl_setopt($ch, CURLOPT_HEADER, TRUE);
  16. curl_setopt($ch, CURLOPT_HTTPHEADER, ['Referer: ' . $referer, 'Content-Type' => 'multipart/form-data']);
  17. curl_setopt($ch, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']);
  18. curl_setopt($ch, CURLOPT_COOKIEFILE, "cookie.txt");
  19. curl_setopt($ch, CURLOPT_URL, $url);
  20. curl_setopt($ch, CURLOPT_POST, TRUE);
  21. curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
  22.  
  23. $response = curl_exec($ch);
  24. curl_close($ch);
  25.  
  26. return $response;
  27. }
  28.  
  29. $file = new CurlFile('zdjecie.jpg');
  30. http://www.php.net/echo sendPostDataUsingCurl('https:/example.com/index.php', ['image' => $file], 'https://wp.pl');


oraz standardowy formularz ze strony (https://www.tutorialspoint.com/php/php_file_uploading):

index.php:
  1. <?php
  2. if(http://www.php.net/isset($_FILES['image'])){
  3. $errors= http://www.php.net/array();
  4. $file_name = $_FILES['image']['name'];
  5. $file_size =$_FILES['image']['size'];
  6. $file_tmp =$_FILES['image']['tmp_name'];
  7. $file_type=$_FILES['image']['type'];
  8. $file_ext=http://www.php.net/strtolower(http://www.php.net/end(http://www.php.net/explode('.',$_FILES['image']['name'])));
  9.  
  10. $extensions= http://www.php.net/array("jpeg","jpg","png");
  11.  
  12. if(http://www.php.net/in_array($file_ext,$extensions)=== false){
  13. $errors[]="extension not allowed, please choose a JPEG or PNG file.";
  14. }
  15.  
  16. if($file_size > 2097152){
  17. $errors[]='File size must be excately 2 MB';
  18. }
  19.  
  20. if(http://www.php.net/empty($errors)==true){
  21. http://www.php.net/move_uploaded_file($file_tmp,"upload/".$file_name);
  22. http://www.php.net/echo "Success";
  23. }else{
  24. http://www.php.net/print_r($errors);
  25. }
  26. }
  27. ?>
  28. <html>
  29. <body>
  30.  
  31. <form action="" method="POST" enctype="multipart/form-data">
  32. <input type="file" name="image" />
  33. <input type="submit"/>
  34. </form>
  35.  
  36. </body>
  37. </html>


U mnie ładnie się wrzuca, daj znać czy u Ciebie działa.

Pozdrawiam

Napisany przez: olszam 10.07.2019, 07:47:04

Sam formularz działa, curl natomiast nie smile.gif. Ciekawe czy ja coś z xamppem mam bo ogólnie curl działa mogę pobrać cały html i wyciągnąć dane tylko problem mam z wysyłaniem plików.

Napisany przez: mieniu 10.07.2019, 22:30:40

Hmm... to sprawdź czy jesteś w stanie wysłać plik na serwer z cmd: curl -F 'data=plik.txt' http://twoj-host

Napisany przez: aras785 10.07.2019, 22:39:49

Wrzuć mój kod + obrazek zdjecie.jpg na serwer (pamiętaj maks 2mb) to Ci zadziała smile.gif

Napisany przez: olszam 11.07.2019, 06:49:01

Cytat
Hmm... to sprawdź czy jesteś w stanie wysłać plik na serwer z cmd: curl -F 'data=plik.txt' http://twoj-host

z tą komenda akurat działa
Kod
curl --form "image=@zdjecie.png" http://localhost/curl_szoi3/zxc.php


Cytat
Wrzuć mój kod + obrazek zdjecie.jpg na serwer (pamiętaj maks 2mb) to Ci zadziała smile.gif

ehhh no nic nie zmieniałem i dalej nic a obrazek to jakieś 30kb waży smile.gif

edit:
skoro wysyła się prze komendę a nie chce skryptem php to chyba będzie trzeba wysyłać z użyciem exec() smile.gif ciekawe jak będzie to wyglądać taki namieszany kod że raz skrypt php a raz exec() smile.gif

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)