Подтвердить что ты не робот

Функция Move_uploaded_file() не работает

Я работаю над веб-сайтом, и я хочу, чтобы пользователь мог загружать файлы. Поэтому я пытаюсь научиться этому. Я исследовал и сказал, что мне пришлось использовать функцию move_uploaded_file(). Я написал код так же, как на примере (изменение данных), но он не сработает. Пожалуйста, помогите мне, я новичок в них. Вот что я сделал до сих пор:

<!DOCTYPE html>
<html>
   <head>
   </head>
<body>
   <form action="upload_file.php" method="POST" enctype="multipart/form-data">
      <input type="hidden" name="MAX_FILE_SIZE" value="30000" />
      <input type="file"name="file">
      <input type="submit">
   </form>
</body>
<html>

Это файл upload_file.php:

<!DOCTYPE html>
<html>
  <head>
  <head>
     <body>
        <?php
          $move = "/Users/George/Desktop/uploads/";
          echo $_FILES["file"]['name']."<br>";
          echo $_FILES["file"]['tmp_name']."<br>";
          echo $_FILES["file"]['size']."<br>";
          echo $_FILES['file']['error']."<br>";
          move_uploaded_file($_FILES['file']['name'], $move);
        ?>
     <body>
<html>
4b9b3361

Ответ 1

Файл будет сохранен во временном местоположении, используйте tmp_name вместо name

if (move_uploaded_file($_FILES['image']['tmp_name'], __DIR__.'/../../uploads/'. $_FILES["image"]['name'])) {
    echo "Uploaded";
} else {
   echo "File was not uploaded";
}

Ответ 2

Попробуйте использовать функцию copy() вместо move_uploaded_file(). Он работал для меня.

copy($_FILES['file']['tmp_name'], $path);

Ответ 3

Это рабочий пример.

Форма HTML:

<form enctype="multipart/form-data" action="upload.php" method="POST">
    <input type="hidden" name="MAX_FILE_SIZE" value="512000" />
    Send this file: <input name="userfile" type="file" />
    <input type="submit" value="Send File" />
</form>

Код PHP:

<?php

    $uploaddir = '/var/www/uploads/';
    $uploadfile = $uploaddir . basename($_FILES['userfile']['name']);

    echo "<p>";

    if (move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadfile)) {
      echo "File is valid, and was successfully uploaded.\n";
    } else {
       echo "Upload failed";
    }

    echo "</p>";
    echo '<pre>';
    echo 'Here is some more debugging info:';
    print_r($_FILES);
    print "</pre>";

    ?>

Ответ 4

$move = "/Users/George/Desktop/uploads/".$_FILES['file']['name'];

Этот.

move_uploaded_file($_FILES['file']['tmp_name'], $move);

Это два.

Проверьте, можно ли записать директорию uploads

Это три.

Возвращаемые значения

Возвращает TRUE при успешном завершении.

Если имя файла не является допустимым файлом загрузки, то никаких действий не будет, и move_uploaded_file() вернет FALSE.

Если filename является допустимым файлом загрузки, но не может быть перемещен для некоторых причина, никаких действий не произойдет, и move_uploaded_file() вернется ЛОЖНЫЙ. Кроме того, выдается предупреждение.

Посмотрите на возвращаемое значение функции.

Что это.

Ответ 5

возможно, вам нужно предоставить дополнительные разрешения для ваших файлов.

предположим, что ваш код находится под /var/www/my _project

попробуйте chmod -R 777 /var/www/my_project

Ответ 6

попробуйте это

$ImageName = $_FILES['file']['name'];
$fileElementName = 'file';
$path = 'Users/George/Desktop/uploads/'; 
$location = $path . $_FILES['file']['name']; 
move_uploaded_file($_FILES['file']['tmp_name'], $location); 

Ответ 7

Вы не ссылаетесь на временное место сохранения файла.

Используйте tmp_name для доступа к файлу.

Вы всегда можете увидеть, что происходит с помощью:

echo "<pre>"; 
print_r($_FILES);

Если вы видите этот массив файлов, у вас будет лучшее понимание и представление о том, что происходит.

Ответ 8

ему это должно понравиться

move_uploaded_file($_FILES['file']['tmp_name'], $move);

И вы не можете переместить его нигде в вашей системе. Вы можете переместить его только в своем каталоге проекта, который должен находиться в htdocs или www, зависит от того, что вы используете wampp, lampp или vertrgo.

Ответ 9

Проводя это, я написал так, чтобы, если кто-то еще приходит сюда, желая загрузить несколько файлов, не будет возвращаться с пустыми руками.:) Этот script не выполняет никаких проверок. Он просто загружает прямо. Не стесняйтесь настраивать этот базовый код в соответствии с вашими потребностями.

ФОРМАТ HTML

<form action="upload_file.php" method="POST" enctype="multipart/form-data">
   Select images: <input type="file" name="files[]" multiple>
   <input type="submit">
</form>

upload_file.php

$move = "\uploads";
foreach ($_FILES["files"]["tmp_name"] as $key => $value) 
{
     $tmp_name = $_FILES["files"]["tmp_name"][$key];
     $name = $move ."\\".basename($_FILES["files"]["name"][$key]);
     move_uploaded_file($tmp_name, $name);
}

Ответ 10

Если вы находитесь на компьютере с Windows, проблем с загрузкой или записью на указанный путь к папке не будет, кроме синтаксических ошибок.

Но в случае пользователей Linux есть обходной путь к этой проблеме, даже если нет синтаксических ошибок.

Прежде всего, я предполагаю, что вы используете это в среде Linux, и вам нужно загрузить что-то в папку проекта в общем каталоге.

Даже если у вас есть доступ для записи и чтения в папку проекта, PHP не обрабатывается конечным пользователем. Он может обрабатываться пользователем www-data или группой.

Итак, чтобы сделать этот www-data доступ  первый тип в;

sudo chgrp "www-data" your_project_folder

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

sudo chown g+w your_project_folder

Это сделает трюк в Linux.

Пожалуйста, не то, что это делается в среде Linux, с запуском phpmyadmin и mysql.

Ответ 11

если файлы не перемещаются, это может быть связано с несколькими причинами

  • проверьте разрешения, которые загружает каталог, убедитесь, что его разрешение не менее 0755.
> find * -type d -print0 | xargs -0 chmod 0755 # for directories find *
> -type f -print0 | xargs -0 chmod 0666 # for files
  • убедитесь, что владелец каталога загрузки и группа не являются пользователем root, в этом случае ваш сценарий не сможет ничего там написать, поэтому измените его на admin или любого пользователя без полномочий root.
chown -R admin:admin public_html      # will restore permission to admin  for folder and files within it 
chown  admin:admin public_html      # will restore permission to admin  for folder only will skip files
  • проверьте каталог tmp, что он доступен для записи или нет, откройте php.ini и проверьте upload_tmp_dir = ваш путь к временному каталогу, убедитесь, что он доступен для записи.
  • попробуйте copy функцию вместо move_uploaded_file

Ответ 12

Этот ответ опоздал, но он может помочь кому-то, как он помог мне

Просто убедитесь, что вы дали разрешение пользователя для файла назначения

sudo chown -R www-data:www-data /Users/George/Desktop/uploads/

Ответ 13

Самый простой способ загрузить файл

$FileName = $file_name;
$path = 'Users/Desktop/uploads/images'; 
$location = $path . $data['name']; 
move_uploaded_file($data['temp_name'],$location);