Сохранение изображения с PHP на localhost, загруженное с помощью формы

Lorenzo Gnech спросил: 28 марта 2018 в 03:05 в: php

Я пытаюсь сохранить изображение, загруженное с помощью HTML-формы на моем сервере localhost (работа с Xampp), но, хотя ошибок нет, файл не сохраняется нигде. Это форма, очень простая:

<form id="form1" action="result.php" method="post" enctype="multipart/form-data">
    Select image to upload:
    <input type="file" name="imguploaded" id="imguploaded" accept=".png, .jpg, .jpeg"></br>
    <input class="btn btn-outline-danger btn-lg" id="inputbtn" type="submit" value="Upload Image" name="submit">
  </form>

, и это PHP-код (на result.php):

<?php
    $result=false;
    $error=false;
    if (isset($_FILES['imguploaded'])){
        $nomefile = strtolower($_FILES['imguploaded']['name']);
        $path = "caricamenti/$nomefile";
        move_uploaded_file($_FILES['imguploaded']['name'], $path);
        echo($path);
    }
    ?>

путь существует и находится в одной папке файлов .PHP.

2 ответа

Jeff ответил: 28 марта 2018 в 03:20

В move_uploaded_file($_FILES['imguploaded']['name'], $path); первый параметр неверен. Это должен быть временный путь, где php хранит его промежуточным образом, который вы найдете в $_FILE['imguploaded']['tmp_name']. Так что измените эту строку на

move_uploaded_file($_FILES['imguploaded']['tmp_name'], $path);

соответствующие документы

Обязательно:

  • очистите имя файла & extention first
  • проверьте допустимые mimetypes, size, ..

Сейчас я могу легко загрузить php-скрипт и выполнить его.

Lorenzo Gnech ответил: 28 марта 2018 в 03:27
Спасибо! Удалось заставить это работать.
Jeff ответил: 28 марта 2018 в 03:28
не стесняйтесь принять тогда, если это помогло!
Funk Forty Niner ответил: 28 марта 2018 в 03:49
@LorenzoGnech Джефф прав. Принятие ответа говорит всем и системе, что вопрос был решен. Если вы не знаете, как, вы можете спросить.
Ayubur Rahaman ответил: 28 марта 2018 в 03:28

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

 $file_name= $_FILES['imguploaded']['name'];
 $file_tmp_name= $_FILES['imguploaded']['tmp_name'];
 $div= explode('.',$file_name );
 $file_txt= strtolower(end($div));
 $unique_image= substr(md5(time()),0,10).".".$file_txt;
 $uploaded_image= "caricamenti/".$unique_image;
 move_uploaded_file($file_tmp_name,$uploaded_image);
Jeff ответил: 28 марта 2018 в 03:30
может быть полезно добавить немного больше объяснения, чем "Попробуйте это".