显示用户输入图像而不将其保存到文件夹

时间:2013-04-10 02:41:21

标签: php

如何显示图像并将其作为输入参数传递给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'> 

但它没有用。因为我将从成千上万的用户那里得到数以千计的输入,所以我不想保存它。有没有优化和有效的方法来做到这一点?

3 个答案:

答案 0 :(得分:0)

src标记的<img>属性应该是客户端可以访问的网址。

您尝试将临时文件的本地路径(例如path/to/your/file.jpg)作为网址提供,它将无效。

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

如果您想在不通过网址访问的地方展示图片,可以尝试将其内容加载为base64内容

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

并在您的HTML中使用

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

答案 1 :(得分:0)

我认为,如果不保存它就无法显示图像。您可以尝试将图像保存在服务器端的临时文件夹中,并定期清理此文件夹以避免占用太多空间。

答案 2 :(得分: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    ; ?>" />

希望其中任何一个可以帮助你