如何显示图像并将其作为输入参数传递给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'>
但它没有用。因为我将从成千上万的用户那里得到数以千计的输入,所以我不想保存它。有没有优化和有效的方法来做到这一点?
答案 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 ; ?>" />
希望其中任何一个可以帮助你