vb如何用HTTP协议上传文件 为什么不用FTP?也许是我孤陋寡闻,没见过用HTTP上传文件。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 wesely 你好用ftp上传是一个办法,但它的安全隐患太多 给你个思路..源代码我不会写.将文件转成二进制或十六进制格式.然后INET控件去调用远程服务器所支持的文件上传的脚本的URL如http://yourname.com/upload?接受二进制或十六进制代码 原来我写的,仅供参考:支持上传下载的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\"> 文件说明</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,$teammemberif(($_[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>";}} 多谢各位问题已经解决了over vb做出像ie收藏夹那样的代码 关于Form窗体的小问题 招聘 请问,是否有办法将外部exe打包成资源文件? 使用vba在excel中打开outlook发送邮件时发不出去,还需要手动打开outlook时邮件才发送出去。 ACCESS可以建视图吗? 如何确定更新数据已完成(往往要花费一些时间,可使用者却不知道到底用多久) 如何删除数组的最后一个元素 请问如何得知当前窗口哪个控件正拥有焦点? 请问我用aa_string=aa_string+chr(10)+chr(13),怎么无法实现换行??应该怎么写?? 不知道表名,如果操纵数据库?? 关于在类中保存数据的问题。。。
用ftp上传是一个办法,但它的安全隐患太多
将文件转成二进制或十六进制格式.然后INET控件去调用远程服务器所支持的文件上传的脚本的URL
如http://yourname.com/upload?接受二进制或十六进制代码
支持上传下载的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\"> 文件说明</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>";
}
}
问题已经解决了
over