Intereting Posts
Загрузка изображения с помощью php-curl CodeIgniter – загрузка нескольких файлов одним вводом Исключить исключение «PDOException» с сообщением «SQLSTATE : недопустимый номер параметра ' Проблема с использованием кодировки utf-8 с использованием PHP + MySQL Проблема с маршрутизацией Zend Framework 2 Изменение допустимых тегов htmlpurifier для этой разметки Перенос файлов с локального компьютера на удаленный сервер с помощью php-скрипта, находящегося на удаленном сервере Если я уже использую PDO, то в чем преимущество дальнейшего абстрагирования запросов SELECT в Eloquent ORM Laravel? Как удалить определенный узел, используя его значение атрибута в PHP XML Dom? htmlentities с исключениями Laravel 4 с Data Mapper? текст заполнителя в текстовом элементе zend Доступ к частной переменной из статической функции в php Загрузка одного файла изображения на FTP с помощью PHP Как узнать, недействителен ли адрес электронной почты?

Функция 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> 

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

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

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

Форма 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>"; ?> 

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

 copy($_FILES['file']['tmp_name'], $path); 
 $move = "/Users/George/Desktop/uploads/".$_FILES['file']['name']; 

Это одно.

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

Это два.

Проверьте, может ли uploads

Это три.

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

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

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

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

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

Вот и все.

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

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

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

попробуй это

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

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

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

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

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

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

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

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

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

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

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); } 

Если вы находитесь на машине с 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.