Использование cURL, как разместить файл - PullRequest
0 голосов
/ 27 января 2020

Я использую веб-сайт AnonFiles для загрузки файлов непосредственно в мою учетную запись, используя их API

https://anonfiles.com/docs/api

Я создал учетную запись, и они дали мне API ключом, и с помощью этого ключа я могу загрузить прямо в свой аккаунт, добавив, например, ?token=5846e48082XXXXXX к запросу на загрузку.

Пример запроса

curl -F "file=@test.txt" https://api.anonfile.com/upload

Теперь я хочу простую форму с PHP код, который позволяет мне выбрать файл и загрузить его в мою учетную запись anonfiles.

Вот моя попытка написать этот запрос в PHP с использованием cURL function

<?PHP

if (isset($_POST['submit'])) {

    $url = 'https://anonfile.com/api/upload?token=5846e48082XXXXXX';

    $ch = curl_init($url);
    curl_setopt($ch, CURLOPT_POST, 1);
    curl_setopt($ch, CURLOPT_POSTFIELDS, [
        'file' => curl_file_create(
            $_FILES['file']['tmp_name'],
            $_FILES['file']['type'],
            $_FILES['file']['name']
        ),
    ]);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

    $json = curl_exec($ch);
    curl_close($ch);

    $result = json_decode($json);

    if (is_object($result) && $result->status) {
        echo "OK!";
    } else {
        echo "Error";
    }
}

?>

HTML FORM

<form action="' . $_SERVER['PHP_SELF'] . '" method="post" enctype="multipart/form-data">
File: <input type="file" name="file" id="file">
<br/>
<input type="submit" name="submit" id="submit" value="Send">
</form>

Но это, кажется, не работает и выводит сообщение об ошибке, а не в порядке, и файл не загружается.

1 Ответ

0 голосов
/ 27 января 2020

Вы можете сделать это как это :

<?PHP

if (isset($_POST['submit'])) {

    $url = 'https://anonfile.com/api/upload?token=5846e48082XXXXXX';

    $filename = $_FILES['file']['name'];
    $filedata = $_FILES['file']['tmp_name'];
    $filesize = $_FILES['file']['size'];
    if ($filedata != '')
    {
        $headers = array("Content-Type:multipart/form-data"); // cURL headers for file uploading
        $postfields = array("filedata" => "@$filedata", "filename" => $filename);
        $ch = curl_init();
        $options = array(
            CURLOPT_URL => $url,
            CURLOPT_HEADER => true,
            CURLOPT_POST => 1,
            CURLOPT_HTTPHEADER => $headers,
            CURLOPT_POSTFIELDS => $postfields,
            CURLOPT_INFILESIZE => $filesize,
            CURLOPT_RETURNTRANSFER => true
        ); // cURL options
        curl_setopt_array($ch, $options);
        $json = curl_exec($ch);
        $result = json_decode($json);
        if(!curl_errno($ch))
        {
            $info = curl_getinfo($ch);
            if ($info['http_code'] == 200) {
                if (is_object($result) && $result->status) {
                    $msg = "OK!";
                }
            }
        }
        else
        {
            $msg = curl_error($ch);
        }
        curl_close($ch);
    }
    else
    {
        $msg = "Please select the file";
    }
    echo $msg;
}

?>
...