在php中,如何使用curl发送GET文件而不是POST文件

在php中,如何使用curl发送GET文件而不是POST文件,php,curl,Php,Curl,我正在尝试发送我的文件,但使用带有curl的GET not POST 我有: $ch = curl_init(); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_URL, "http://localhost/test.php/?file_contents=$file"); $result = curl_exec($ch); 我知道我可以很容易地发送带有POST cu

我正在尝试发送我的文件,但使用带有curl的GET not POST

我有:

    $ch = curl_init();

    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_URL, "http://localhost/test.php/?file_contents=$file");

    $result = curl_exec($ch);
我知道我可以很容易地发送带有POST curl请求的文件,如(摘自):

然而,我不想我的要求是一个职位。我似乎不知道如何在没有它的情况下合并文件传输

有什么帮助或建议吗?我曾想过使用curl\u file\u create(),但我不确定如何在这里实现它,因为它的文档非常糟糕

curl_setopt($ch, CURLOPT_URL, "http://localhost/test.php/?".http_build_query(array(
    'name'=>basename($file),
    'file_contents'=>file_get_contents($file)
)));
urlencoding是二进制安全的,因此您可以通过这种方式发送任何文件内容,
对于大文件,url编码与多部分/表单数据相比非常浪费,每个非ascii字节(甚至一些ascii字节,如0x20)的开销为300%(例如,空字节编码为%00,使用3个字节,其中多部分/表单数据将仅使用1个字节。10 MB二进制文件上载将变为~30MB,其中多部分/表单数据将使用10 MB)-因此,如果您正在上载大文件,或者带宽很昂贵,请不要这样做。您还应该记住,在许多流行的web服务器(如nginx和apache)中,默认情况下存在非常有限的最大url长度限制,以及大多数web服务器如何记录完整的url,因此您的访问日志文件将变得非常大,包含以这种方式上载的每个文件。

我不希望我的请求成为帖子。
什么?为什么?您尝试使用GET的用例是什么?同意@JonStirling不使用POST执行此任务将是不明智的,因为GET不支持I don’我真的不支持一个主体(我的意思是你可以发送一个主体,但Web服务器可以拒绝它,因为)我知道它应该是POST,但我正在更新的旧服务器将其作为$\u-GET,而不是以智能方式将其更改为$\u-POST,我试图找到一种使用GET的方法。Curl对它没有任何支持,这可能是有原因的。
curl_setopt($ch, CURLOPT_URL, "http://localhost/test.php/?".http_build_query(array(
    'name'=>basename($file),
    'file_contents'=>file_get_contents($file)
)));