2016-06-22 3 views
0

То, что я пытаюсь сделать, это сохранить двоичный файл, отправленный через CURL с другого сервера.Получение двоичного файла, отправленного через CURL

РНР загрузчиком у меня есть:

<?php 
define("UPLOAD_DIR", "/tmp/"); 

if (!empty($_FILES["myFile"])) { 
    $myFile = $_FILES["myFile"]; 

    if ($myFile["error"] !== UPLOAD_ERR_OK) { 
     echo "<p>An error occurred.</p>"; 
     exit; 
    } 

    // ensure a safe filename 
    $name = preg_replace("/[^A-Z0-9._-]/i", "_", $myFile["name"]); 

    // don't overwrite an existing file 
    $i = 0; 
    $parts = pathinfo($name); 
    while (file_exists(UPLOAD_DIR . $name)) { 
     $i++; 
     $name = $parts["filename"] . "-" . $i . "." . $parts["extension"]; 
    } 

    // preserve file from temporary directory 
    $success = move_uploaded_file($myFile["tmp_name"], 
     UPLOAD_DIR . $name); 
    if (!$success) { 
     echo "<p>Unable to save file.</p>"; 
     exit; 
    } 

    // set proper permissions on the new file 
    chmod(UPLOAD_DIR . $name, 0644); 
} 

Так у меня есть это на моем сайте, как, например:

example.com/uploader.php

На сервере № 2, я бегу команда:

curl --request POST --data-binary "@binary.jpg" http://example.com/uploader.php 

, а затем я просматриваю/TMP/папку для файла с именем binary.jpg, но это не там, в чем проблема?

Спасибо.

+0

Это дубликат http://stackoverflow.com/questions/12667797/using-curl-to-upload-post-data-with- файлы? –

+0

@NicolasBouvrette No. – bobb

+0

Можете ли вы попробовать команду curl, предложенную в этом сообщении, чтобы узнать, работает ли ваш загрузчик? –

ответ

0

Он может находиться в месте, где вы запускаете команду curl. Например, если вы запускаете в/home/student, то двоичный. Jpg находится в местоположении/home/student/binary. Jpg После запуска команды curl вы получаете успешное сообщение о передаче?

0

В коде, if (!empty($_FILES["myFile"])) {, вы специально проверяете поле с именем myFile массива $_FILES, а затем делаете вещи. Хотя команда curl не предполагает, что двоичный файл отправляется с именем myFile. Вы можете выделить имя полей POST в вашей команде curl, и проблема будет решена с надеждой. (Также попробуйте распечатать весь массив $_POST и $_FILES в коде для отладки)

+0

Как это было бы? Как это? curl --request POST --data-binary "[email protected]" http://example.com/uploader.php – bobb

+0

Я сделал завиток - затребовал POST -data-binary [email protected] http://example.com/uploader.php, никакого результата. Это так расстраивает, должно быть, так просто? – bobb

Смежные вопросы