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