我查了很多资料,虽然这方面的资料不少,但是还是没有实现,总是出现HTTP/1.1 500 Internal Server Error的错误,不知道是怎么回事,请高手赐教!最好能发源代码我,包括delphi和web服务器接收的ASP代码,谢谢先,我的QQ:411622499 EMail:[email protected]我的代码:
procedure TForm1.Button2Click(Sender: TObject);
var
ResponseStream: TMemoryStream;
MultiPartFormDataStream: TMsMultiPartFormDataStream;
Idhttp1:TIdHTTP;
begin
Idhttp1:=TIdHTTP.Create;
MultiPartFormDataStream := TMsMultiPartFormDataStream.Create;
ResponseStream := TMemoryStream.Create;
try
IdHttp1.Request.ContentType := MultiPartFormDataStream.RequestContentType;
MultiPartFormDataStream.AddFormField('PersonName', edtPersonName.Text);
MultiPartFormDataStream.AddFormField('Description', edtDescription.Text);
MultiPartFormDataStream.AddFile(edtFile.Name, edtFile.Text, edtMIMEType.Text);
MultiPartFormDataStream.PrepareStreamForDispatch;
MultiPartFormDataStream.Position := 0;
IdHTTP1.Post(edtHost.Text, MultiPartFormDataStream, ResponseStream);
finally
MultiPartFormDataStream.Free;
ResponseStream.Free;
end;
end;<%OPTION EXPLICIT%>
<!--#include FILE="upfile_class.asp"-->
<%
dim upfile,formPath,ServerPath,FSPath,formName,FileName,oFile
set upfile=new upfile_class '建立上传对象
upfile.GetData(10240000) '取得上传数据,限制最大上传10M
%>
<html>
<head>
<title>文件上传</title>
<style type="text/css">
<!--.p9{ font-size:9pt;font-family:宋体}-->
</style>
<meta http-equiv="Content-Type" content="text/XML; charset=gb2312">
</head>
<body leftmargin="20" topmargin="20" class="p9">
<p class="tx1"><font color="#0000FF" size="4"><%=upfile.Version%></font></p>
<hr size=1 noshadow width=300 align=left>
<%if upfile.err>0 then '如果出错
select case upfile.err
case 1 Response.Write "你没有上传数据呀???是不是搞错了??"
case 2 Response.Write "你上传的文件超出我们的限制,最大10M"
end select
else
%>
<table border="1" cellpadding="0" cellspacing="0" bordercolor="#000000" class="p9" style="border-collapse:collapse">
<tr bgcolor="#CCCCCC">
<td height="25" valign='middle'>本地文件</td>
<td valign='middle'>大小(字节)</td>
<td valign='middle'>上传到</td>
</tr>
<%
FSPath=GetFilePath(Server.mappath("upfile.asp"),"\") '取得当前文件在服务器路径
ServerPath=GetFilePath(Request.ServerVariables("HTTP_REFERER"),"/") '取得在网站上的位置
for each formName in upfile.file '列出所有上传了的文件
set oFile=upfile.file(formname)
FileName=upfile.form(formName) '取得文本域的值
if not FileName>"" then FileName=oFile.filename '如果没有输入新的文件名,就用原来的文件名
oFile.SaveToFile(FSPath&FileName) '保存文件
%>
<tr>
<td height="20" valign='middle'><%=oFile.FilePath&oFile.FileName%></td>
<td valign='middle'><%=oFile.filesize%></td>
<td valign='middle'><A HREF="<%=serverpath&FileName%>"><%=FileName%></A></td>
</tr>
<% set oFile=nothing
next
%>
<tr>
<td colspan="3" height="25" valign='middle'>一共上传了<%=upfile.file.Count%>个文件</td>
</tr>
<%
end if
set upfile=nothing '删除此对象
%>
</body>
</html><%
function GetFilePath(FullPath,str)
If FullPath<>"" Then
GetFilePath=left(FullPath,InStrRev(FullPath,str))
Else
GetFilePath=""
End If
End function
%>
procedure TForm1.Button2Click(Sender: TObject);
var
ResponseStream: TMemoryStream;
MultiPartFormDataStream: TMsMultiPartFormDataStream;
Idhttp1:TIdHTTP;
begin
Idhttp1:=TIdHTTP.Create;
MultiPartFormDataStream := TMsMultiPartFormDataStream.Create;
ResponseStream := TMemoryStream.Create;
try
IdHttp1.Request.ContentType := MultiPartFormDataStream.RequestContentType;
MultiPartFormDataStream.AddFormField('PersonName', edtPersonName.Text);
MultiPartFormDataStream.AddFormField('Description', edtDescription.Text);
MultiPartFormDataStream.AddFile(edtFile.Name, edtFile.Text, edtMIMEType.Text);
MultiPartFormDataStream.PrepareStreamForDispatch;
MultiPartFormDataStream.Position := 0;
IdHTTP1.Post(edtHost.Text, MultiPartFormDataStream, ResponseStream);
finally
MultiPartFormDataStream.Free;
ResponseStream.Free;
end;
end;<%OPTION EXPLICIT%>
<!--#include FILE="upfile_class.asp"-->
<%
dim upfile,formPath,ServerPath,FSPath,formName,FileName,oFile
set upfile=new upfile_class '建立上传对象
upfile.GetData(10240000) '取得上传数据,限制最大上传10M
%>
<html>
<head>
<title>文件上传</title>
<style type="text/css">
<!--.p9{ font-size:9pt;font-family:宋体}-->
</style>
<meta http-equiv="Content-Type" content="text/XML; charset=gb2312">
</head>
<body leftmargin="20" topmargin="20" class="p9">
<p class="tx1"><font color="#0000FF" size="4"><%=upfile.Version%></font></p>
<hr size=1 noshadow width=300 align=left>
<%if upfile.err>0 then '如果出错
select case upfile.err
case 1 Response.Write "你没有上传数据呀???是不是搞错了??"
case 2 Response.Write "你上传的文件超出我们的限制,最大10M"
end select
else
%>
<table border="1" cellpadding="0" cellspacing="0" bordercolor="#000000" class="p9" style="border-collapse:collapse">
<tr bgcolor="#CCCCCC">
<td height="25" valign='middle'>本地文件</td>
<td valign='middle'>大小(字节)</td>
<td valign='middle'>上传到</td>
</tr>
<%
FSPath=GetFilePath(Server.mappath("upfile.asp"),"\") '取得当前文件在服务器路径
ServerPath=GetFilePath(Request.ServerVariables("HTTP_REFERER"),"/") '取得在网站上的位置
for each formName in upfile.file '列出所有上传了的文件
set oFile=upfile.file(formname)
FileName=upfile.form(formName) '取得文本域的值
if not FileName>"" then FileName=oFile.filename '如果没有输入新的文件名,就用原来的文件名
oFile.SaveToFile(FSPath&FileName) '保存文件
%>
<tr>
<td height="20" valign='middle'><%=oFile.FilePath&oFile.FileName%></td>
<td valign='middle'><%=oFile.filesize%></td>
<td valign='middle'><A HREF="<%=serverpath&FileName%>"><%=FileName%></A></td>
</tr>
<% set oFile=nothing
next
%>
<tr>
<td colspan="3" height="25" valign='middle'>一共上传了<%=upfile.file.Count%>个文件</td>
</tr>
<%
end if
set upfile=nothing '删除此对象
%>
</body>
</html><%
function GetFilePath(FullPath,str)
If FullPath<>"" Then
GetFilePath=left(FullPath,InStrRev(FullPath,str))
Else
GetFilePath=""
End If
End function
%>
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货