服务响应文件SRF直接向浏览器传图片流的代码片段

13 篇文章 0 订阅
8 篇文章 0 订阅

题目:服务响应文件SRF直接向客户端浏览器传图片流的代码片段

 

cheungmine


问题:如何从Web服务端把图片数据直接写到流里,展现在客户端浏览器中

为什么要这样做:效率、安全。不生成临时文件。完全内存操作。

 

我使用VS2005 创建ATL Server项目,合并ISAPI,其他如常。项目名称:RefreshImg。自动创建同名的虚拟目录,并且自动部署。

 

1)改写RefreshImg.h文件的下面这段代码:

 

    // 下面是一个有关如何将替换标记用于模具(Stencil)处理器的示例
    HTTP_CODE OnHello(void)
    {
        //m_HttpResponse << "Hello World!";

        char  buf[4096];
        size_t cbRead;
        DWORD  dwWritten;

        m_HttpResponse.ClearContent();
        m_HttpResponse.SetContentType("image/jpeg");

 

        // 下面的图片文件必须存在
        FILE *fp = fopen("C://Inetpub//wwwroot//RefreshImg//obm_skq.jpg", "rb");
       
        while((cbRead = fread(buf, 1, 4096, fp))>0){
            if (S_OK != m_HttpResponse.WriteStream(buf, cbRead, &dwWritten) || cbRead != dwWritten){
                fclose(fp);
                return HTTP_FAIL;
            }
        }

        return HTTP_SUCCESS;
    }

 

2)改写RefreshImg.srf:

<html>
{{handler RefreshImg.dll/Default}}
<head>
</head>
<body>
  <img src="{{Hello}}" />
</body>
</html>

 

3)重新生成全部解决方案,然后用IE或FF打开

 

http://localhost/RefreshImg/RefreshImg.srf

 

就可以看到图片了。

 

也可以自己写一个新的Refresh.htm网页,如下:

<html>
<head>
<title>cheungmine</title>
</head>
<body>
  <img src="RefreshImg.srf" />
</body>
</html>

 

把 Refresh.htm 放到和 RefreshImg.srf 同一个目录下面。

 

这时候浏览Refresh.htm,也可以看到图片:

>>

 

.NET仿照此做。但本文与.NET无关。

 

 

 

 

 

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

车斗

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值