Html <;选择多个>;和enctype=";“多部分/表单数据”;
我想知道是否可以同时使用enctype=“multipart/form data”和select multiple。下面是演练: 我有这个html文件(test.html):Html <;选择多个>;和enctype=";“多部分/表单数据”;,html,asp-classic,multipartform-data,enctype,Html,Asp Classic,Multipartform Data,Enctype,我想知道是否可以同时使用enctype=“multipart/form data”和select multiple。下面是演练: 我有这个html文件(test.html): 弗斯特 第二 第三 当我在列表中选择这些选项时,我的操作页面不会显示任何内容(action.asp): 但是如果我删除test.html中的enctype=“multipart/form data”,那么它就可以工作了 问题是我使用的asp上载文件组件需要此enctype=“multipart/form dat
弗斯特
第二
第三
当我在列表中选择这些选项时,我的操作页面不会显示任何内容(action.asp):
但是如果我删除test.html中的enctype=“multipart/form data”,那么它就可以工作了
问题是我使用的asp上载文件组件需要此enctype=“multipart/form data”。有什么建议吗
提前感谢。如果您使用enctype=“multipart/form data”,那一定是因为您正在上载文件。如果上载文件,则应使用上载组件。如果上载,则可以使用:
设置上载组件=
CreateObject(“您的.UploadComponentClassString”)sFormValue=yourUploadComponent.Form.Item(“prof”).Value
最后在FileUploader类上发现了一个bug。mcolFormElem Dictionary变量不会添加名称/值对。如果
元素的集合中已经存在名称/值对,我已经添加了下面的代码,工作正常
If Not mcolFormElem.Exists(LCase(sInputName)) Then
mcolFormElem.Add LCase(sInputName), CWideString(MidB(biData, nPosBegin, nPosEnd-nPosBegin))
else
dim tempKeyVal
tempKeyVal=mcolFormElem.item(LCase(sInputName))
mcolFormElem.Remove(LCase(sInputName))
mcolFormElem.Add LCase(sInputName), tempKeyVal&","&CWideString(MidB(biData, nPosBegin, nPosEnd-nPosBegin))
end if
如果我这样做,我只会得到第一个选中的项目:prof=Uploader.form(“prof”),如果我按照您的建议:sFormValue=Uploader.form.item(“prof”).Value我收到此错误:Microsoft VBScript运行时错误“800a01c2”参数数错误或属性分配无效:“Form”还使用什么组件?我将尝试用作数组并向您提供反馈。这是一个完全基于Jacob“Beezle”Gilley制作的ASP的组件。我用JavaScript做了一个函数,将选择倍数的值保存到输入type=“hidden”中,现在它可以工作了。@pcromano虽然这个答案是正确的,但没有解释为什么。当您使用
enctype=“multipart/form data”
时,您会告诉服务器您正在发布的数据将作为多部分二进制数据发布,并且由您来解析并检索各个多部分。经典ASP为此有一个特定的响应对象方法,称为Response.BinaryRead
和Response.BinaryWrite
。尝试使用Request.Form
将不起作用,它不知道多部分数据。最常见的用途是上传文件(如图像、文档等),但不是唯一的用途。如果您使用的是ASPUpload组件,请检查:这确实是一个不错的解决方案,但我没有使用ASPUpload组件。
<%
dim prof
prof = request.form("prof")
response.write prof
%>
If Not mcolFormElem.Exists(LCase(sInputName)) Then
mcolFormElem.Add LCase(sInputName), CWideString(MidB(biData, nPosBegin, nPosEnd-nPosBegin))
else
dim tempKeyVal
tempKeyVal=mcolFormElem.item(LCase(sInputName))
mcolFormElem.Remove(LCase(sInputName))
mcolFormElem.Add LCase(sInputName), tempKeyVal&","&CWideString(MidB(biData, nPosBegin, nPosEnd-nPosBegin))
end if