ASP:request.form没有返回值?

Pra*_*ant 7 vbscript asp-classic

我有以下表格,

<form action="contact_us.asp" method="post" enctype="multipart/form-data" name="form1" id="form1">
   <input name="firstname" type="text" id="firstname" size="30" />
   <input name="lastname" type="text" id="lastname" size="30" />
   <input type="submit" name="submit" id="submit" value="Submit" />
</form>
Run Code Online (Sandbox Code Playgroud)

但是当我试图在我的ASP文件contact_us.asp中获取这些post变量的值时,它返回空白.代码如下:

<%@LANGUAGE="VBSCRIPT" CODEPAGE="65001"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Untitled Document</title>
</head>
<%

Dim FirstName, LastName, Email, Message
FirstName = request.form("firstname")
LastName = request.form("lastname")

response.write(FirstName & "OK")

%>
Run Code Online (Sandbox Code Playgroud)

它只对我回归"好".Message变量中什么都没有?

请帮帮我,告诉我这里有什么问题?

bob*_*nce 21

经典ASP不支持multipart/form-data.即使对于ASP历史悠久的语言来说,这是一个令人惊讶的基本缺陷,但是你要做些什么呢,转向ASP.NET?(是吗?哦.那就不用了.)

如果你没有进行文件上传,最简单的就是坚持默认enctype(即application/x-www-form-urlencoded).唯一的优点multipart/form-data是您可以将文件上传到其中.(从理论上讲,它还有一个优势,你可以明确地指定字符编码.但是没有浏览器实际上这样做.)

如果确实需要multipart/form-data在Classic ASP中处理,则需要自己解析传入的请求体,将其拆分为字段和值.或者更确切地说,使用现有的库来执行此操作*.

该库通常会提供单独的界面来读取上载的文件和其他表单值.这完全取代了Classic ASP Request.Form界面的使用.您可以在哪里找到它取决于您选择的库.这意味着,如果您希望拥有一个可以同时响应的表单,则enctype必须检查类型并使用两个不同接口中的一个.

*:有负载. 例子.我并不支持这些中的任何一个......它们都没有按照标准正确地解析多部分,并且两者似乎对文件名安全性有点松懈(从不在用户提交的文件名下存储文件!安全灾难!).但这似乎与ASP上传脚本的课程相提并论.至少,与许多人不同,他们不是要钱.