Не удается загрузить файл PHP при изменении имени ввода HTML - PullRequest
0 голосов
/ 09 мая 2018

Я новичок в HTML и PHP.Я использовал html / php код из https://gist.github.com/taterbase/2688850 для реализации страницы загрузки файлов на моем веб-сервере.Создал папку «uploads /» на сервере и дал ему разрешение chmod 777.

Работает, когда я использую name = "uploaded_file", оригинал, я вижу файл в папке.Однако происходит сбой, когда я изменяю name = "xxx" на что-то другое, например на другое имя или форму массива, на экране нет сообщений, файл не отображается в папке загрузки.

Является ли"uploaded_file" исправление или жестко закодированное значение?Моя цель - использовать массив позже, чтобы сделать его для загрузки нескольких файлов, однако это ограничение изменения имени не позволяет мне.

Пожалуйста, смотрите ниже рабочие и нерабочие образцы:

upload.php (name = "uploaded_file") Работает

<!DOCTYPE html>
<html>
<head>
  <title>Upload your files</title>
</head>
<body>
  <form enctype="multipart/form-data" action="upload.php" method="POST">
    <p>Upload your file</p>
    <input type="file" name="uploaded_file"></input><br />
    <input type="submit" value="Upload"></input>
  </form>
</body>
</html>
<?PHP
  if(!empty($_FILES['uploaded_file']))
  {
    $path = "uploads/";
    $path = $path . basename( $_FILES['uploaded_file']['name']);
    if(move_uploaded_file($_FILES['uploaded_file']['tmp_name'], $path)) {
      echo "The file ".  basename( $_FILES['uploaded_file']['name']). 
      " has been uploaded";
    } else{
        echo "There was an error uploading the file, please try again!";
    }
  }
?>

upload.php (name = "user_file") Не работает

<!DOCTYPE html>
<html>
<head>
  <title>Upload your files</title>
</head>
<body>
  <form enctype="multipart/form-data" action="upload.php" method="POST">
    <p>Upload your file</p>
    <input type="file" name="user_file"></input><br />
    <input type="submit" value="Upload"></input>
  </form>
</body>
</html>
<?PHP
  if(!empty($_FILES['user_file']))
  {
    $path = "uploads/";
    $path = $path . basename( $_FILES['user_file']['name']);
    if(move_user_file($_FILES['user_file']['tmp_name'], $path)) {
      echo "The file ".  basename( $_FILES['user_file']['name']). 
      " has been uploaded";
    } else{
        echo "There was an error uploading the file, please try again!";
    }
  }
?>

Ответы [ 3 ]

0 голосов
/ 09 мая 2018

Вы меняете вызов основной функции на неопределенную функцию или пользовательскую функцию.

Если вы определили функцию move_user_file(), тогда все в порядке.

Но, если вы ожидаете встроенную функцию ядра PHP, тогда функции нет move_user_file().

Кажется, что в строке есть проблема:

if(move_user_file($_FILES['user_file']['tmp_name'], $path)) {

Должно быть:

if(move_uploaded_file($_FILES['user_file']['tmp_name'], $path)) {

Вы заканчиваете тем, что вызываете неопределенную функцию move_user_file().

Необходимая функция: move_uploaded_file ()

0 голосов
/ 09 мая 2018

Это не move_user_file, это move_uploaded_file. В следующий раз узнайте, как правильно использовать редактор и найти и заменить; o)

0 голосов
/ 09 мая 2018

В этой строке есть проблема move_user_file($_FILES['user_file']['tmp_name'], $path).

php's bool move_uploaded_file ( string $filename , string $destination ) перемещает загруженные файлы в нужное место. Это встроенная функция в php API .

Ваш код должен быть изменен на

move_uploaded_file($_FILES['user_file']['tmp_name'], $path)

чтобы заставить его работать.

Я полагаю, ваше недоразумение произошло от вашего имени. Ранее ваше имя поля было uploaded_file, а имя функции - move_uploaded_file(). Таким образом, вы, должно быть, подумали, что, когда ваше имя поля user_file, вы должны позвонить move_user_file() в php. Это своего рода креативное мышление ..: D

Является ли "загруженный_файл" фиксированным или жестко запрограммированным значением? Что ж, вам нужно прочитать данную ссылку.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...