zoukankan      html  css  js  c++  java
  • 利用Perl开发Internet/Intranet应用之二

    利用Perl开发Internet/Intranet应用之二

    ----3 图形文件的处理

    ----虽然client经常向服务器申请的都是text/html文件,但是服务器也可以回送GIF、JPG等图形文件,我们只需在数据的header中指明即可。假如我们用< imgsrc="http://10.0.0.1/Scripts/te.pl" >语句调用CGI程式,向服务器申请一个GIF文件,则服务器收到请求后会以二进制码的形式回送一个GIF的图形文件给client。te.pl源程序如下:


    #!/bin/Perl
    #如果该路径已加入PATH中,上句可省
    $MY_FILE_NAME='c:/InetPub/wwwroot/photo/1.gif';
    #图形文件存放的路径
    $CHUNK_SIZE=4096;
    #如果图形文件较大,该值可相应取大一些

    #header
    print"HTTP/1.0200OK\n";
    print"Content-type:image/gif\r\n";
    print"\r\n";
    #如果传输的图形文件为JPG文件,
    只需把"image/gif"改为"image/jpeg"

    open(MY_FILE,"< $MY_FILE_NAME")
    ordie("Can'topen$MY_FILE_NAME:$!\n");
    binmode(MY_FILE);
    binmode(STDOUT);
    #设置传输模式为二进制代码
    while($cb=read(MY_FILE,$data,$CHUNK_SIZE))
    {
    print$data;
    }
    close(MY_FILE);


    ----4 如何实现服务器重导

    ----服务器重导也就是ServerRedirection。我们不但可以利用CGI程式产生虚拟文件,还可以要求服务器送出一个已经存在的文件(该文件可以是本服务器的,也可以是网上任意的页面),这就是服务器重导。详见下图:


    1请求2
    ------ >---- >
    4服务器重导3
    client< ------server
    < ----CGI(Application)
    5产生虚拟文件
    < ----

    ----做法是:在CGI程式中不要header(即不要print"HTTP/1.0200OK\n";print"Content-Type:text/html\n\n";这两行)和多加一行print"Location:http://***","\n\n";即可。(http://***为任意的url地址)

    ----源程序为:

    ----#!/bin/perl
    ----print"Location:http://***","\n\n";

    ----另外,可用JavaScriptForclient的语句书写,但含重导语句的页面需先出现,会有闪烁的效果。附程式如下:

    < Script >
    Location.href="http://***";
    < /Script >
  • 相关阅读:
    shiro
    leetcode696 C++ 36ms 计算二进制子串
    leetcode557 C++ 56ms 反转字符串中的每个单词
    leetcode657 C++ 16ms 判断回环
    leetcode709 C++ 4ms 转换成小写字母
    leetcode141 C++ 8ms 环形链表
    leetcode160 C++ 32ms 相交链表
    leetcode234 C++ 28ms 回文链表
    leetcode203 C++ 28ms 删除链表中满足条件的节点
    leetcode83 C++ 12ms 删除有序链表中的重复元素
  • 原文地址:https://www.cnblogs.com/djcsch2001/p/2029191.html
Copyright © 2011-2022 走看看