从服务器获取图像并显示它们 - php

我有个问题。如果您能指导我,我将不胜感激。
我在服务器上有一些图像。在我的客户端代码(jQuery)中,我需要从服务器(通过AJAX-php)获取图像(实际图像,而不是服务器上的链接),并在页面上显示图像。收到图像后,我不希望将它们保存在客户端的硬盘上;我只是临时需要它们(也许浏览器可以在短时间内为我保留它们)。你能帮我么?我不知道如何用jQuery / php / Ajax甚至JSON来实现它。

我当前的代码是:

<script>
$(document).ready(function () {
    var phpFileName="serverSide.php";
    $.ajaxSetup({
        "url":phpFileName,
        });
    $.ajax({
        "type":"GET",
        async: false,
        "data":{
            "newvar1":"value1",
        },
        "success":function(data){
            var imageName  = data.split('^');
        }
    });

    $imageDirOnServer = "some/Diron/Server/";
    for(i=0;i<imageName.length;i++){
        $("#Cell").append("<div style='background-image:url("+$imageDirOnServer+imageName[i]+".bmp);'></div>");
    }    
});
</script>

和php代码(serverSide.php):

<?php
for($k=0;$k<3;$k++){
        echo sprintf("%02d",$k+1);
        echo "^";
    }
?>

此代码显示了物理上位于服务器上的01.bmp,02.bmp和03.bmp。
我想更改它,以便图像由我的网页从服务器上获取,然后显示出来。
加载页面时,我从服务器获取图像,原因是此后我不希望有任何客户端-服务器流量。
我提到我不希望将图像保存在客户端计算机上,因为出于安全考虑,我认为图像未经允许(未经用户许可)。但是,浏览器的缓存对我来说还可以。
谢谢。

参考方案

我相信您想要的是inline images。

这是通过将图像数据放入HTML来实现的,并且可以通过Javascript进行操作。

您最终得到的图像标签如下所示:

<img src="data:image/gif;base64,R0lGODlhEAAOALMAAOazToeHh0tL" width="16" height="14" alt="My alt text">

因此,您需要做的是设置对PHP脚本的ajax调用,您可以在其中执行以下操作:

<?php

  // Your AJAX url is script.php?imagename=image.jpg

  $image = basename($_GET['imagename']);
  if (!file_exists($image)) {
    header('HTTP/1.1 404 Not Found');
    exit;
  }

  $contentType = 'image/jpeg'; // You will need to put the correct type for the file in the string
  $str = "data:$contentType;base64,".base64_encode(file_get_contents($image));
  echo $str;
  exit;

...并且当您使用Javascript获得响应时,请执行以下操作(例如):

 var newImg = document.createElement('img');
 newImg.src = xhr.responseText;
 newImg.alt = 'My alt text';
 document.getElementById('some_element_that_exists').appendChild(newImg);

显然,上面的代码缺少必要的错误检查等,但是希望它可以帮助您入门。

如果过往的学徒想要对我的Javascript进行jQuery修饰,请放心。

PHP Count数组元素 - php

嗨,有人可以解释为什么这会返回“数组由0个元素组成”。 :$arr = array(1,3,5); $count = count($arr); if ($count = 0) { echo "An array is empty."; } else { echo "An array has $count elements.…

PHP:从函数返回值并直接回显它? - php

这可能是一个愚蠢的问题,但是……的PHPfunction get_info() { $something = "test"; return $something; } html<div class="test"><?php echo get_info(); ?></div> 有没有办…

PHP:将数据从二维数组复制到一维数组的最快方法 - php

我有一个巨大的二维PHP数组,带有500万行。$t = [ [ "id" => 1, "name" => "foo" ], [ "id" => 2, "name" => "bar" ] ]; 现在,我必须将此数组的I…

php-printf和sprintf具有不同的输出 - php

我编写了以下微型php程序来测试printf和sprintf:<?php $str_1 = printf("%x%x%x", 65, 127, 245); $str_2 = sprintf("%x%x%x", 65, 127, 245); echo $str_1 . "\n"; echo $s…

PHP-正则表达式删除引号并添加大括号? - php

好吧,我不愿承认这一点,但是我对REGEX感到很困难,我永远找不到关于如何设置表达式的不错的教程。所以说我有这样的事情context['something'] 我想将所有事件更改为context[something] 那我有' . $var . ' 我想将所有事件更改为{var} 这是当前的概念,但是我在正则表达式部分…