Прикрепите изображение в форме php и используйте html2pdf

у меня есть форма php и я использую html2pdf (TCPDF). Форма php работает, когда я использую текст и изображения, которые уже включены в форму, но теперь я хочу прикрепить изображение, а также включить его в файл PDF.

Код, который я использую сейчас, я получаю имя файла.

Чтобы прикрепить изображение, я использую
$<span><input type="file" name="foto"></span>
А чтобы включить его в pdf-файл, я использую этот код
$foto = $_POST['foto'];
$content .= '<img src='.$foto.'with=200 height=auto>';

Извините за мой плохой английский!
С уважением
Даниэль


person user3266053    schedule 05.10.2019    source источник
comment
Сделайте var_dump() в своей переменной $_POST... вы увидите, что изображение не установлено. Вам нужна HTML-ФОРМА multipart/form-data и в PHP вы можете прочитать ее с помощью $_FILE   -  person Richard    schedule 06.10.2019
comment
Спасибо за Ваш ответ. Так что я не могу просто написатьfoto = $_FILES['foto']; и распечатать в pdf файле $content .= '<img src='.$foto.'with=200 height=auto>'; или что мне нужно написать?   -  person user3266053    schedule 06.10.2019


Ответы (1)


Выполните обычную загрузку HTML-файла следующим образом:

<form method="post" enctype="multipart/form-data">
  <label>Deine Datei ;) :
    <input name="fileUpload" type="file" accept="image/*"> 
  </label>  
  <label>Your Name:
    <input name="userName" type="text" accept="image/*"> 
  </label>
  <button type="submite" name="submite">Upload</button>
</form>

А на стороне PHP вы должны переместить свой файл:

if(isset($_POST["submit"])) {
    $userName = $_POST['userName']; // the normale methode
    $check = getimagesize($_FILES["fileUpload"]["tmp_name"]);
    if($check !== false) {
       $temp_path_to_file = $_FILES['fileUpload']['tmp_name'];
       $file_content = file_get_contents($temp_path_to_file); 
       // and now past your image to your PDF.
       // if you want to save the image on the server you must move it with this (its not necessary if you want only to past it in your PDF)
       if(move_uploaded_file($temp_path_to_file, '/my/image/folder/image_'.uniqid() . '.' . pathinfo($filename, PATHINFO_EXTENSION);
    }
}

РЕДАКТИРОВАТЬ: для вашего примера вы должны преобразовать $file_content в строку base64. Чем вы можете вставить его в свое изображение:

$base64 = 'data:image/' . pathinfo($filename, PATHINFO_EXTENSION) . ';base64,' . base64_encode($file_content);
echo '<img src="'. $base64 .'" style="with: 200; height: auto">';
person Richard    schedule 06.10.2019
comment
Спасибо тебе за помощь! Когда я использую обычную загрузку файла HTML, как мне распечатать его в файле pdf? '<img src="'. base64_encode($file_content) .'" style="with: 200; height: auto">'; не работает. - person user3266053; 06.10.2019
comment
не работает очень непонятно. Что не работает? Вы сделали var_debug на $file_content? Был ли внутри какой-то контент? Пожалуйста, разместите здесь свой код, чтобы мы могли помочь вам лучше. - person Richard; 08.10.2019
comment
Я вставил код, который вы написали для обычной загрузки файла HTML и код php, и удалил последнюю строку if(move_uploaded_file($temp_path_to_file, '/my/image/folder/image_'.uniqid() . '.' . pathinfo($filename, PATHINFO_EXTENSION);, и когда я сделал var_debug на $file_content, на экране появилось много знаков :), но когда я вставляю $content .='<img src="'. base64_encode($file_content) .'" style="with: 200; height: auto">';, экран становится белым, когда я нажмите отправить. Весь код не может уместиться во многих символах. Еще раз спасибо за помощь! - person user3266053; 08.10.2019
comment
Ты лучший @Richard! Когда я обновляю часть изображения и нажимаю «Отправить», изображение, которое я хочу прикрепить в pdf, отображается в верхней части формы, а в pdf оно печатается data:image/;base64,/9j/4QAYRXhpZgAASUkqAAgAAAAAAAAAAAAAAP/sABFEdWNreQ....... - person user3266053; 08.10.2019