首页 > 解决方案 > 如何通过 PHP 中的 POST 方法传输图像

问题描述

我想发送存储在 $_FILES['the_file'] 中的现有图像。$_FILES['the_file'] 来自“img_upload.php”页面,用于上传该图像,然后将其发送到表单其余部分所在的“form.php”页面,然后发送到名为的处理页面“add_product.php”

我的问题是我想将“form.php”页面上的表单中的 $_FILES['the_file'] 发送到“add_product.php”页面(其余的表单来自“form.php”)。我怎样才能做到这一点?

这是我的代码:

// img_upload.php
<form action="form.php" method="post" enctype="multipart/form-data">
    <input type='file' name='the_file' class='image-selector'>
    <button type="submit">Insert the picture</button>
</form>

// form.php
<?php

$file = $_FILES['the_file'];
$fileName = $_FILES['the_file']['name'];
$fileSize = $_FILES['the_file']['size'];
$fileTmpName  = $_FILES['the_file']['tmp_name'];
$fileType = $_FILES['the_file']['type'];

?>

<p>Picture name: <?php echo $fileName; ?></p>
<form action="../Includes/add_product.php" method="post" enctype="multipart/form-data">
<?php
    echo "<input type='hidden' name='file' value=".$file.">";
?>
    <input type="text" name="price" placeholder="Name the price">
    <input type="text" name="sent_from" placeholder="Sent from">
    <input type="text" name="category" placeholder="Select the category">
    <button type="submit">Insert the product</button>
</form>

标签: phpfilepost

解决方案


如果要将其包含在隐藏输入中,则需要将其编码为字符串。通常的方法是对其进行base64编码

这个问题涵盖了如何做到这一点

当你将字符串插入到文档中时,一定要确保你使用了,htmlspecialchars这样你就不会暴露于 XSS 攻击。


该方法包括将文件发送到服务器,然后将其(以较少压缩的形式)发送回浏览器,然后再次将其发送回服务器。

这不是带宽效率!

通常,此方法与服务器上的文件相同,然后将 id(例如文件名)发送回客户端(并有一些逻辑来清理用户在中途放弃进程时留下的旧文件)。


推荐阅读