如果找不到图像,则显示某些图像的自定义图像 - Lighttpd

时间:2008-10-30 22:11:16

标签: image http-status-code-404 lighttpd

我有一个网站,可以在创建内容后为某些内容创建图像。我想弄清楚在创建内容和创建图像之间要做什么。我的想法是,我可能能够设置自定义图像以显示原始图像上的404错误。但是,我不确定如何使用lighttpd执行此操作。有什么想法或替代方案吗?

编辑:问题是用户不是创建内容的用户,而是由进程创建的。基本上我们正在向目录添加项目,我们希望从产品提供商提供的图像中创建标准化目录图像。但是,我不希望提供商端的慢速服务器减慢新产品的添加速度。因此,一个单独的过程将在稍后创建图像,如果可用的话。我想我可以在创建产品时让系统创建默认图像,然后在我们从提供者提供的图像创建图像时覆盖它。

5 个答案:

答案 0 :(得分:1)

使用HTML中的<object>标记并回退默认图片。

<P>                 <!-- First, try the Python applet -->
<OBJECT title="The Earth as seen from space" 
        classid="http://www.observer.mars/TheEarth.py">
                    <!-- Else, try the MPEG video -->
  <OBJECT data="TheEarth.mpeg" type="application/mpeg">
                    <!-- Else, try the GIF image -->
    <OBJECT data="TheEarth.gif" type="image/gif">
                    <!-- Else render the text -->
     The <STRONG>Earth</STRONG> as seen from space.
    </OBJECT>
  </OBJECT>
</OBJECT>
</P>

(来自w3.org的例子)

答案 1 :(得分:1)

客户端的另一个选择是:

<img src="/images/generated_image_xyz.png" 
    onerror="this.src='/images/default_image.png'; this.title='Loading...';" />

答案 2 :(得分:0)

据我了解您的问题:您希望在生成真实图像之前显示中间图像?

您可以显示加载图像并使用AJAX在创建时将该DOM节点更改为真实图像。您可以从头开始编写或使用任何知名且稳定的AJAX库,如果您没有自己的偏好,请查看jQuery

答案 3 :(得分:0)

继续@kentlarsson - 如果你想通过Javascript这样做,我最近发现这个代码: http://jquery.com/plugins/project/Preload以及http://demos.flesler.com/jquery/preload/placeholder/的演示,正如他所建议的那样 - 使用'notFound'选项。

我不太了解lighttpd告诉您如何在网站中设置一个或多个子目录的自定义图像。

答案 4 :(得分:0)

我认为你可以单独在客户端解决这个问题。

根据雅斯贝斯的回答,你可以这样做:

<OBJECT data="/images/generated_image_xyz.png" type="image/png">
     Loading..<blink>.</blink>
</OBJECT>

还可以使用CSS对背景进行分层:

<style type="text/css">
    .content_image { width:100px; height: 100px; 
        background: transparent url('/images/default_image.png') no-repeat }
    .content_image div { width:100px; height: 100px; }
</style>

<div class="content_image">
     <div style="background: 
         transparent url('/images/generated_image_xyz.png') no-repeat" />
</div>

后一种解决方案假设您生成的图像没有任何透明度。