免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 4546 | 回复: 12
打印 上一主题 下一主题

[cgi脚本]怎么样才能文本图片一起输出? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2006-07-21 19:25 |只看该作者 |倒序浏览
#if 1
#define SERVER_NAME cgiServerName
#endif
#if 0
#define SERVER_NAME "www.boutell.com"
#endif


#ifdef WIN32
#define SAVED_ENVIRONMENT "c:\\cgicsave.env"
#else
#define SAVED_ENVIRONMENT "/tmp/cgicsave.env"
#endif /* WIN32 */

#include <stdio.h>
#include "cgic.h"
#include <string.h>
#include <stdlib.h>


void LoadEnvironment();


int cgiMain() {
#ifdef DEBUG
        LoadEnvironment();
#endif /* DEBUG */
        if (cgiFormSubmitClicked("loadenvironment") == cgiFormSuccess) {
                LoadEnvironment();
        }
        cgiHeaderContentType("text/html");
        /* Top of the page */
        fprintf(cgiOut, "<HTML><HEAD>\n");
        fprintf(cgiOut, "<TITLE>cgic test</TITLE></HEAD>\n");
        fprintf(cgiOut, "<BODY><H1>cgic test</H1>\n");
        if ((cgiFormSubmitClicked("testcgic") == cgiFormSuccess) ||
                cgiFormSubmitClicked("saveenvironment") == cgiFormSuccess)
        {
                    fprintf(cgiOut,"Content-type: image/gif\r\n");
            fprintf(cgiOut,"Content-disposition: inline; filename=apache.gif\r\n\r\n");
            fprintf(cgiOut,"name:apache.gif");
                fprintf(cgiOut, "<hr>\n");
        }
        /* Now show the form */
        /* Finish up the page */
        fprintf(cgiOut, "</BODY></HTML>\n");
        return 0;
}
  这是cgic205 cgitest.c中的部分代码,我改了改我只是想先显示一个<TITLE>cgic test</TITLE>再显示一行〈H1>cgic test</H1>
  完了是:
    fprintf(cgiOut,"Content-type: image/gif\r\n");
            fprintf(cgiOut,"Content-disposition: inline; filename=apache.gif\r\n\r\n");
            fprintf(cgiOut,"name:apache.gif");
                fprintf(cgiOut, "<hr>\n");
    编译通过了,结果运行就显示了<TITLE>cgic test</TITLE>别的什么也没有
   哪位老大告诉我怎样在cgi脚本中同时输出文本和图片呢?
    或着图片文本交替输出
  我始终没搞明白怎样用c语言使用cgic库写程序输出图片
我就是想在网页中通过cgi脚本输出文本和图片
还有就是mime头在一个网页输出中能使用两次吗比如:
Content-type: text/html\n\n
    html代码。。。
Content-type: image/gif\n\n
    html代码。。。。
能象这样使用吗?

[ 本帖最后由 fuer 于 2006-7-22 13:08 编辑 ]

论坛徽章:
0
2 [报告]
发表于 2006-07-21 20:37 |只看该作者
HTML

论坛徽章:
0
3 [报告]
发表于 2006-07-21 20:38 |只看该作者
Content-type: text/html\n\n
    html代码。。。
Content-type: image/gif\n\n
    html代码。。。。

同一个脚本不能有两个Content-type

论坛徽章:
1
技术图书徽章
日期:2013-12-05 23:25:45
4 [报告]
发表于 2006-07-21 20:57 |只看该作者
这是做不到的。

不过。png有一种编码方式可以放入网页的。

论坛徽章:
0
5 [报告]
发表于 2006-07-22 10:30 |只看该作者
哪位老大告诉我怎样在cgi脚本中同时输出文本和图片呢?
    或着图片文本交替输出
  我始终没搞明白怎样用c语言使用cgic库写程序输出图片
我就是想在网页中通过cgi脚本输出文本和图片

论坛徽章:
0
6 [报告]
发表于 2006-07-22 11:57 |只看该作者
是不是想把图片和文本数据全放到一个CGI 文件中?
样例 cgi 程序见附件.
windows 环境用 demo.rar
linux        环境用 demo.gz

如果是, 我告诉你答案.

demo.rar

90.38 KB, 下载次数: 76

demo.cgi.gz

23.9 KB, 下载次数: 97

论坛徽章:
0
7 [报告]
发表于 2006-07-22 11:58 |只看该作者

回复 5楼 fuer 的帖子

难道图片存在*befull里还得创建一个文件fopen()把图片写到文件里fwite()再使用<img=src.....>显示在网页上吗?用c语言不能直接把*befull里的图片写到标准输出stout再网页上显示出来吗?
   
  一般的网页是:
  printf("Content-type: text/html\n\n")
   printf("<HTML><HEAD>\n");
    printf( "<TITLE>cgic test</TITLE></HEAD>\n");
     printf( "<BODY><H1>cgic test</H1>\n");
怎么样在这里直接输出图片而不是用printf("<img=src...>")这样的东西,
    int name[];  假设里面有图片
怎么样才能把name里的图片直接输出

    printf("</body></html>")

论坛徽章:
0
8 [报告]
发表于 2006-07-22 12:01 |只看该作者

回复 6楼 newzy 的帖子

newzy老大你直接写一小段代码就行了
  最好是一小段完整的直接能编译通过的

[ 本帖最后由 fuer 于 2006-7-22 12:16 编辑 ]

论坛徽章:
0
9 [报告]
发表于 2006-07-22 12:08 |只看该作者

回复 6楼 newzy 的帖子

对就是demo.cgi这样请newzy老大教教我怎么写
万分感谢

论坛徽章:
0
10 [报告]
发表于 2006-07-22 13:25 |只看该作者
原理:
    WEB 是一个典型的分布式应用, 它被设计成一次请求一个应答.
    图文并存的 WEB 页面, 必须通过多次传送页面上的每个元素.
    Content-Type 用于标识每次应答的元素类型,
    如 text/html 标识 html 文本, image/jpeg 标识图片.


CSP 源程序:
说明: 直接将 C 代码嵌入到 html/xml 文本中, <% %> 之间的代码为 CSP 语句.


  1. <html>
  2. <head>
  3. <meta http-equiv=Content-Type content="text/html; charset=gb2312">
  4. <title>eybuild/CSP demo</title>
  5. </head>
  6. <body>
  7. <% {static int        num=0; %>
  8. <p>计数器: <% =$++num %></p>
  9. <% }%>
  10. Hello world. <img src="<% =romPrefix(NULL) %>/img/face.gif">
  11. <BR>
  12. <form action="<% =cgiPrefix(NULL) %>/demo/test.csp" method="post">
  13.     请在输入: <input type="text" name="inputbox"><br>
  14.     <input type="submit" name="testit" value="testit"><br>
  15. </form>
  16. </body>
  17. </html>
复制代码


使用安装:
下载地址: http://www.eybuild.com/develop/download/eybuild-00-08-04.tar.gz
Windows环境安装:

1.  将eyBuild开发包eybuild-xx-yy-zz.tar.gz解压到一个目录,如E:\eybuild
2.  设置环境变量EYBUILD_BASE=E:\eybuild,方法是:
A. 从菜单“开始à设置à控制面板à系统”打开系统属性对话框
B. 从“高级”选项卡上点击“环境变量”按钮
C. 可根据需要在“用户变量”或“系统变量”将EYBUILD_BASE正确添加进去

Linux环境安装:

1.  将eybuild开发包eybuild-xx-yy-zz.tar.gz解压到一个目录,如$HOME/eybuild

2.  打开.bash_profile添加如下语句,以设置环境变量:
EYBUILD_BASE=$HOME/eybuild
export EYBUILD_BASE

3.  退出并重新登录当前shell

Windows 下, 用 VC++ 打开 $(EYBUILD_BASE)/project/demo/win32/demo.dsw 编译生成 demo.cgi
Linux 下:
# cd eybuild/project/demo/unix
make clean all

详见 <<eybuild 中文手册>>
http://www.eybuild.com/develop/doc/manual/eybuild_manual_ch.htm

祝你好运!

[ 本帖最后由 newzy 于 2006-7-22 13:29 编辑 ]
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP