Как загрузить файлы в другой подкаталог, используя PHP через cURL в командной строке Linux? - PullRequest
0 голосов
/ 26 декабря 2018

Я пытаюсь загрузить несколько файлов с помощью PHP через curl в командной строке (на данный момент мой PHP-скрипт может загружать только один файл за раз.) Все файлы одного типа.Но каждый файл принадлежит разной школе и классу.

Например, пользователь вводит в командной строке следующее:

curl –F “uploadedfile=@/home/michael/test” –F “school=diamond” –F “class=alpha” http://website.com/michael/upload.php

Имя файла, школа и класс задаются пользователем.

Ожидаемый результат - скрипт может загрузить файл теста в альфа-каталог:

/michael/uploads/diamond/alpha

PHP:

<?php
$target_path = “uploads/”;

//I tried to add these 3 lines, but it doesn't work
$school = basename( $_FILES['uploadedfile']['school']);
$class = basename( $_FILES['uploadedfile']['class']);
$target_path = $target_path . $school . "/" . $class . "/" . basename( $_FILES['uploadedfile']['name']);    

//$target_path = $target_path . basename( $_FILES[‘uploadedfile’][‘name’]);
if(move_uploaded_file($_FILES[‘uploadedfile’][‘tmp_name’], $target_path)) {
echo “The file”. basename( $_FILES[‘uploadedfile’][‘name’]. “ has been uploaded”;
} else {
echo “There was an error uploading the file, please try again!”;
}
?>

Прочитав руководство, я заметил, что не могу сделать $_FILES['uploadedfile']['school'] и ['class']. Как я могу изменить свой скрипт PHP, чтобы он мог захватывать школу и класс и загружать файл в подкаталог класса?

1 Ответ

0 голосов
/ 26 декабря 2018

В то время как –F «uploadedfile = @ / home / michael / test» команды curl будет извлечено в суперглобальном массиве $ _FILES, появится другой –F «school = diamond» –F «class = alpha»в массиве $ _POST.

В вашем скрипте вы должны заменить:

    $school = basename( $_FILES['uploadedfile']['school']);
    $class = basename( $_FILES['uploadedfile']['class']);

на

    $school = $_POST['school'];
    $class = $_POST['class'];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...