为什么不用FTP?
也许是我孤陋寡闻,没见过用HTTP上传文件。

解决方案 »

  1.   

    wesely 你好
    用ftp上传是一个办法,但它的安全隐患太多
      

  2.   

    给你个思路..源代码我不会写.
    将文件转成二进制或十六进制格式.然后INET控件去调用远程服务器所支持的文件上传的脚本的URL
    如http://yourname.com/upload?接受二进制或十六进制代码
      

  3.   

    原来我写的,仅供参考:
    支持上传下载的CGI脚本
    用法:
       down.cgi?list
       down.cgi?add#!/usr/bin/perl
    ############################@querys = split(/&/, $ENV{'QUERY_STRING'});
    foreach $query (@querys){($cmd, $dat) = split(/=/, $query);}
    print "Content-type: text/html\n\n";print qq~
    <html>
    <head>
    <title>Auto DOWNLOAD</title>
    <meta http-equiv="Content-Type" content="text/html; charset=gb2312">
    <style type="text/css">
    <!--
    A:link {text-decoration: none; color:#0066CC}
    A:visited {text-decoration: none; color:#0066CC}
    A:active {text-decoration: none; color:#FF3366}
    A:hover {text-decoration: underline; color:#CC3300}
    -->
    </style>
    </head><body bgcolor="#000000" text="#FFCC99" link="#CC9900">
    <div align="center">
    </div>
      <table width="75%" border="1" bordercolorlight="#000000" bordercolordark="#000000" bgcolor="#666666" align="center">
        <tr> 
          <td> 
            <div align="center"><font color="#FFFFFF">Auto Download</font></div>
          </td>
        </tr>
      </table>
      ~;# if ($dat ne "teammember"){$teammember = "0";}else{$teammember="1";}
    $teammember="1";if ($cmd eq "list")
    {
    #-------------------------------------------------------------------------------open(File,"download.idx");
    @DLDIndex = <File>;
    close(File);
    print "<table width=\"100%\" border=\"0\" height=\"24\"><tr><td width=\"422\" height=\"13\" bgcolor=\"#666666\">";
    print "<p><font size=\"2\">&nbsp;&nbsp;&nbsp;&nbsp;文件说明</font></p>";
    print "</td><td width=\"124\" height=\"13\" bgcolor=\"#666666\"><font size=\"2\">上传人</font></td><td width=\"211\" height=\"13\" bgcolor=\"#666666\"><font size=\"2\">上传时间</font></td></tr></table>";
    foreach $line (@DLDIndex)
    {
             ($viewtype,$caption,$filename,$username,$datetime) = split(/::~::/, $line);
             PrintLine($viewtype,$caption,$filename,$username,$datetime,$teammember);
    }
    #-------------------------------------------------------------------------------
    }
    elsif($cmd eq "add")
    {
    #///////////////////////////////////////////////////////////////////////////////
    if($teammember)
    {
    print qq~
    <form name="form1" enctype="multipart/form-data" method="post" action="download.cgi?post">
    您的称呼: 
        
      <input type="text" name="txtname">
      <br>
      文件说明: 
      <input type="text" name="txtcaption">
      <br>
      本机文件: 
      <input type="file" name="file">
      <br>
      上传后文件名: 
      <input type="text" name="txtfile">
      <br>
      <input type="hidden" name="viewtype" value="0">
      <br>
      <input type="submit" name="Submit" value="提交">
    </form>
    ~;
    }
    #///////////////////////////////////////////////////////////////////////////////
    }
    elsif($cmd eq "post")
    {
    read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'});
    $directory = "../download/";
    $| = 1;
    $buffer =~ /^(.+)\r\n/;
    $bound = $1;
    @parts = split(/$bound/,$buffer);@subparts = split(/\r\n/,$parts[4]);
    $filename = $subparts[3];
    $filename =~ s/\r//g;
    $filename =~ s/\n//g;
    if(-e "$directory$filename")
    {
      print "上传失败!已经存在同名文件或者您输入的文件名为空!请换个文件名重试。";
      goto end;
    }
    @subparts = split(/\r\n/,$parts[1]);
    $username = $subparts[3];
    $username =~ s/\r//g;
    $username =~ s/\n//g;
    @subparts = split(/\r\n/,$parts[2]);
    $caption = $subparts[3];
    $caption =~ s/\r//g;
    $caption =~ s/\n//g;@subparts = split(/\r\n/,$parts[5]);
    $viewtype = $subparts[3];
    $viewtype =~ s/\r//g;
    $viewtype =~ s/\n//g;
    if($viewtype ne "1"){$viewtype = "0";}if(($username eq "") || ($caption eq ""))
    {
    print "请您输入你的名称和对上传文件的简短说明";
    goto end;
    }#print $parts[1];        #user name
    #print $parts[2];        #caption
    #print $parts[3];        #file
    #print $parts[4];        #txtfile
    #print $parts[5];        #viewtype
    $parts[3] =~ s/\r\nContent\-Disposition.+\r\n//g;
    $parts[3] =~ s/Content\-Type.+\r\n//g;
    $parts[3] =~ s/^\r\n//;
    $parts[3] =~ s/\r\n$//;if($parts[3] !~ /[\w\d]/)
    {
    print "你并没有提供一个文件来上传或者它是空的.\n";
    exit 0;
    }
    open(REAL,">$directory$filename");
    binmode REAL;
    print REAL $parts[3];
    close(REAL);if(-e "$directory$filename")
    {
     $size=length($parts[3]);
    print "上传成功! 以下是该文件的数据\:\n";
    print "<ul>\n";
    print "<li><b>新文件名</b>: $filename\n";
    print "<li><b>大小</b>:$size Bytes\n";
    print "</ul><br>";open(File,"download.idx");
    @DLDIndex = <File>;
    close(File);
    ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time);
    if ($sec < 10){$sec = "0$sec";}
    if ($min < 10){$min = "0$min";}
    if ($hour< 10){$hour = "0$hour";}
    $mon = ($mon + 1);
    if ($mon < 10){$mon = "0$mon";}
    if ($mday< 10){$mday = "0$mday";}
    $year = $year + 1900;
    $now = "$year年$mon月$mday日 $hour:$min:$sec";
    open(File,">download.idx");
    #         ($idx,$caption,$filename,$username,$datetime) = split(/::~::/, $line);
    $t=sprintf("%s::~::%s::~::%s::~::%s::~::%s\r\n",$viewtype,$caption,$filename,$username,$now);
    print File $t;
    print File "\n";
    print File @DLDIndex;
    close(File);
    }
    else
    {
    print "上传失败!\n";
    print "<br><b>错误信息</b>\n";
    print "<pre>$!</pre>\n";
    }
    #^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    }
    end:
    print "<table width=\"100%\" border=\"0\" height=\"12\"><tr><td width=\"100%\" height=\"2\"><div align=\"center\"><font size=\"2\"><b>本系统由</b><a href=\"mailto:chice_wxg\@sina.com\">Chice</a><font ><b>维护</b></font></font></div></td></tr></table>";
    print "</body></html>";exit 0;sub PrintLine
    {
    #  $_[0]    $_[1]    $_[2]    $_[3]   $_[4]   $_[5]
    #$viewtype,$caption,$filename,$username,$datetime,$teammember
    if(($_[0] eq "0") || (($_[0] eq "1") && ($_[5] eq "1")))
    {
    print "<table width=\"100%\" border=\"0\" height=\"24\"><tr><td width=\"422\" height=\"13\">";
    print "<p><font size=\"2\">";
    print "·<a href=\"http://yournet/download/$_[2]\">$_[1]</a></font></p>";
    print "</td><td width=\"124\" height=\"13\"><font size=\"2\"> $_[3]</font></td><td width=\"211\" height=\"13\"><font size=\"2\">$_[4]</font></td></tr></table>";
    }
    }
      

  4.   

    多谢各位
    问题已经解决了
    over