curl_file_upload.phpt 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. --TEST--
  2. CURL file uploading
  3. --INI--
  4. --SKIPIF--
  5. <?php include 'skipif.inc'; ?>
  6. --FILE--
  7. <?php
  8. function testcurl($ch, $name, $mime = '', $postname = '')
  9. {
  10. if(!empty($postname)) {
  11. $file = new CurlFile($name, $mime, $postname);
  12. } else if(!empty($mime)) {
  13. $file = new CurlFile($name, $mime);
  14. } else {
  15. $file = new CurlFile($name);
  16. }
  17. curl_setopt($ch, CURLOPT_POSTFIELDS, array("file" => $file));
  18. var_dump(curl_exec($ch));
  19. }
  20. include 'server.inc';
  21. $host = curl_cli_server_start();
  22. $ch = curl_init();
  23. curl_setopt($ch, CURLOPT_URL, "{$host}/get.php?test=file");
  24. curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
  25. testcurl($ch, __DIR__ . '/curl_testdata1.txt');
  26. testcurl($ch, __DIR__ . '/curl_testdata1.txt', 'text/plain');
  27. testcurl($ch, __DIR__ . '/curl_testdata1.txt', '', 'foo.txt');
  28. testcurl($ch, __DIR__ . '/curl_testdata1.txt', 'text/plain', 'foo.txt');
  29. $file = new CurlFile(__DIR__ . '/curl_testdata1.txt');
  30. $file->setMimeType('text/plain');
  31. var_dump($file->getMimeType());
  32. var_dump($file->getFilename());
  33. curl_setopt($ch, CURLOPT_POSTFIELDS, array("file" => $file));
  34. var_dump(curl_exec($ch));
  35. $file = curl_file_create(__DIR__ . '/curl_testdata1.txt');
  36. $file->setPostFilename('foo.txt');
  37. var_dump($file->getPostFilename());
  38. curl_setopt($ch, CURLOPT_POSTFIELDS, array("file" => $file));
  39. var_dump(curl_exec($ch));
  40. curl_setopt($ch, CURLOPT_SAFE_UPLOAD, 0);
  41. $params = array('file' => '@' . __DIR__ . '/curl_testdata1.txt');
  42. curl_setopt($ch, CURLOPT_POSTFIELDS, $params);
  43. var_dump(curl_exec($ch));
  44. curl_setopt($ch, CURLOPT_SAFE_UPLOAD, true);
  45. $params = array('file' => '@' . __DIR__ . '/curl_testdata1.txt');
  46. curl_setopt($ch, CURLOPT_POSTFIELDS, $params);
  47. var_dump(curl_exec($ch));
  48. curl_setopt($ch, CURLOPT_URL, "{$host}/get.php?test=post");
  49. $params = array('file' => '@' . __DIR__ . '/curl_testdata1.txt');
  50. curl_setopt($ch, CURLOPT_POSTFIELDS, $params);
  51. var_dump(curl_exec($ch));
  52. curl_close($ch);
  53. ?>
  54. --EXPECTF--
  55. string(%d) "curl_testdata1.txt|application/octet-stream"
  56. string(%d) "curl_testdata1.txt|text/plain"
  57. string(%d) "foo.txt|application/octet-stream"
  58. string(%d) "foo.txt|text/plain"
  59. string(%d) "text/plain"
  60. string(%d) "%s/curl_testdata1.txt"
  61. string(%d) "curl_testdata1.txt|text/plain"
  62. string(%d) "foo.txt"
  63. string(%d) "foo.txt|application/octet-stream"
  64. Deprecated: curl_setopt(): The usage of the @filename API for file uploading is deprecated. Please use the CURLFile class instead in %s on line %d
  65. string(%d) "curl_testdata1.txt|application/octet-stream"
  66. string(0) ""
  67. string(%d) "array(1) {
  68. ["file"]=>
  69. string(%d) "@%s/curl_testdata1.txt"
  70. }
  71. "