尝试使用CURL将文件从C ++上传到PHP

时间:2015-07-02 12:54:36

标签: php c++ curl

我正在尝试将带有CURL的图片(及其拇指)从C ++上传到我的服务器。

C ++目前没有出现问题,但重点如下:

Immagine这是我在PHP中的代码:

<?php
    $valid = $_GET['valid'];
    echo "hola";
    file_put_contents('queries.txt', "eh!\n");
?>

当我打电话给file.php时,它必须在同一个文件夹中写一个“queries.txt”(它就是这样)。

现在,当从C ++调用时,这是代码:

    string url = "http://myserver.com/file.php";

    CURL* curl = curl_easy_init();

    // set target url
    curl_easy_setopt(curl, CURLOPT_URL, url.c_str());

    // holders
    struct curl_httppost* beginPostList = NULL;
    struct curl_httppost* endPostList = NULL;

    string concat1 = tempFolder + imageName;
    string concat2 = tempFolder + image200Name;

    curl_formadd(&beginPostList, &endPostList, CURLFORM_COPYNAME, "image",
                 CURLFORM_FILE, &concat1, CURLFORM_END);
    curl_formadd(&beginPostList, &endPostList, CURLFORM_COPYNAME, "thumb",
                 CURLFORM_FILE, &concat2, CURLFORM_END);

    // perform
    curl_easy_setopt(curl, CURLOPT_POST, true);
    curl_easy_setopt(curl, CURLOPT_HTTPPOST, beginPostList);
    CURLcode code = curl_easy_perform(curl);

我当前的错误是服务器没有被调用(因为没有创建“queries.txt”),但是如果我删除这行:

curl_formadd(&beginPostList, &endPostList, CURLFORM_COPYNAME, "image",
             CURLFORM_FILE, &concat1, CURLFORM_END);
curl_formadd(&beginPostList, &endPostList, CURLFORM_COPYNAME, "thumb",
             CURLFORM_FILE, &image200Name, CURLFORM_END);

完美地调用PHP脚本。那么,为什么CURL在添加任何文件时都没有调用我的脚本?

提前谢谢。

编辑:

1.-我试图通过设置内容类型来调用它:

curl_formadd(&beginPostList, &endPostList, CURLFORM_COPYNAME, "image",
             CURLFORM_FILE, &concat1,
             CURLFORM_CONTENTTYPE, "image/jpeg", CURLFORM_END);

但没有发生

可能的错误:

我正在尝试不设置任何内容,我正在获取HTTP STATUS = 200,但如果我设置任何要上传的文件,我会 HTTP STATUS = 0 ...为什么?

1 个答案:

答案 0 :(得分:2)

当您需要 c string

时,您正在传递 c ++字符串

尝试:

curl_formadd(&beginPostList, &endPostList, CURLFORM_COPYNAME, "image",
             CURLFORM_FILE, concat1.c_str(), CURLFORM_END);
curl_formadd(&beginPostList, &endPostList, CURLFORM_COPYNAME, "thumb",
             CURLFORM_FILE, concat2.c_str(), CURLFORM_END);