почему у меня поврежден файл изображения после использования функции move_uploaded_file - PullRequest
0 голосов
/ 11 мая 2019

У меня есть форма:

<form action='' enctype="multipart/form-data" method="post">
<input type="file" name="image">
<input type="submit" value="send">
</form>

У меня есть php-код:

$file = $_FILES['image']
$ext = explode(",", $file['type'])[0];
$location = "../image/movedimage.$ext";
if(move_uploaded_file($file['tmp_name'], $location)) echo 'moved';
else echo 'internal error';

Это эхо "перемещено", но проблема в том, что когда я проверяю путь к файлубыл перемещен, файл изображения там поврежден.

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

 $file_content = file_get_contents($file['tmp_name']);
 $file_dump = file_put_contents($location, $file_content);

Эта попытка размещения файла непосредственно с помощью file_put_contents отлично работает, и файл изображения идеально подходит для загрузки, но использование move_uploaded_file оставляет поврежденный файл в папке назначения.Я хотел бы понять, почему это происходит, когда $file['error'] возвращает значение 0, а функция move_uploaded_file не возвращает false.

1 Ответ

0 голосов
/ 11 мая 2019

В вашем коде с помощью

$ext = explode(",", $file['type'])[0];

вы получите расширение как image/your_image_type. Затем вы добавляете это к имени файла, что создаст недопустимое изображение. Чтобы получить расширение, вы можете сделать следующее

$ext= explode("/", $file['type'])[1];

или

$ext = strtolower(end(explode('.',$_FILES['image']['name'])));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...