You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

47 lines
1.6 KiB

  1. <?php
  2. namespace App\Common\Utils;
  3. class Utils
  4. {
  5. /**
  6. * 模拟发送PUT方式请求
  7. * @param $url
  8. * @param $contentBase64Md5
  9. * @param $fileContent
  10. * @return mixed|string
  11. * @author Ayz
  12. */
  13. public static function sendHttpPUT($url, $contentBase64Md5, $fileContent)
  14. {
  15. $header = [
  16. 'Content-Type:application/octet-stream'
  17. ];
  18. $status = '';
  19. $curl_handle = curl_init();
  20. curl_setopt($curl_handle, CURLOPT_URL, $url);
  21. curl_setopt($curl_handle, CURLOPT_FILETIME, true);
  22. curl_setopt($curl_handle, CURLOPT_FRESH_CONNECT, false);
  23. curl_setopt($curl_handle, CURLOPT_HEADER, true); // 输出HTTP头 true
  24. curl_setopt($curl_handle, CURLOPT_RETURNTRANSFER, true);
  25. curl_setopt($curl_handle, CURLOPT_TIMEOUT, 5184000);
  26. curl_setopt($curl_handle, CURLOPT_CONNECTTIMEOUT, 120);
  27. curl_setopt($curl_handle, CURLOPT_SSL_VERIFYPEER, false);
  28. curl_setopt($curl_handle, CURLOPT_SSL_VERIFYHOST, false);
  29. curl_setopt($curl_handle, CURLOPT_HTTPHEADER, $header);
  30. curl_setopt($curl_handle, CURLOPT_CUSTOMREQUEST, 'PUT');
  31. curl_setopt($curl_handle, CURLOPT_POSTFIELDS, $fileContent);
  32. $result = curl_exec($curl_handle);
  33. $status = curl_getinfo($curl_handle, CURLINFO_HTTP_CODE);
  34. if ($result === false) {
  35. $status = curl_errno($curl_handle);
  36. $result = 'put file to oss - curl error :' . curl_error($curl_handle);
  37. }
  38. curl_close($curl_handle);
  39. //$this->debug($url, $fileContent, $header, $result);
  40. return $status;
  41. }
  42. }