0

如何在 php 的可执行文件中显示图像并将其作为输入参数传递,而不将图像保存在文件夹中。用户提供图像路径作为输入,当我将图像保存到可以工作的文件夹时,我使用 ajax 来显示图像,但是如何在不将其保存在文件夹中的情况下显示它?我现在的代码是

     move_uploaded_file($_FILES["file"]["tmp_name"],"upload/".$_FILES["file"]["name"]);
                        //echo "Stored in "."upload/".$_FILES["file"]["name"];
                        echo "<img src='upload/".$_FILES["file"]["name"]."' class='preview'>";

我试过了

   <img src=$_FILES["file"]["tmp_name"]. class='preview'> 

但它没有用。由于我将收到来自数千名用户的数千条输入,因此我不想保存它。有没有优化和有效的方法来做到这一点?

4

3 回答 3

0

标签的src属性<img>应该是客户端可访问的 URL。

您尝试将path/to/your/file.jpg临时文件的本地路径(例如:)作为 URL,它将不起作用。

info:上传的图片保存在本地磁盘的一个临时目录下,以后可以被PHP删除。

如果您想显示图像而不将其移动到 URL 可到达的位置,您可以尝试将其内容加载为 base64 内容

$imagedata = file_get_contents($_FILES["file"]["tmp_name"]);
$base64 = base64_encode($imagedata);

并在您的 HTML 中使用

<img src="data:image/png;base64, <?php echo $base64; ?>" />
于 2013-04-10T02:50:58.377 回答
0

我认为,不保存就无法显示图像。您可以尝试将图像保存在服务器端的临时文件夹中,并定期清理此文件夹以避免大量空间消耗。

于 2013-04-10T02:53:36.533 回答
0

我不认为你可以在不保存的情况下显示图像。

如果您想稍后输出,您需要将文件保存到文件系统或内存中

您的问题是 $_FILES 仅存在于图像发送到的脚本中。因此,当您对 img 源发起另一个 http 请求时,php 不再知道您尝试读取的文件是什么。

您需要一种方法来判断要在 http 请求上读取哪个图像。

您可以做的一件事是您可以将文件保存在客户端可访问的位置,然后在输出后让 php 将其删除。因此,一旦输出图像,它将被删除并且不再存在于文件系统中。

另一种方法是通过直接将内容写入 httpresponse 从内存中获取图像。

你可以这样做

$image            = file_get_contents($_FILES["file"]["tmp_name"]);
$enocoded_data    = base64_encode($image);

当您显示图像标签时:

<img src="data:image/png;base64, <?php echo $enocoded_data    ; ?>" />

希望这些对你有帮助

于 2013-04-10T02:55:01.743 回答