2017-08-31 143 views
2

我从86现在的工作的OS更新到x64。邮政的形式,但缺失参数

这是正常工作在x86,但在x64上不罚款的.asp项目。

的问题是64后以后不能得到表单参数。

tgtdir = mySmartUpload.Form("tgtdir").Values 

tgtdir是空的!

是IIS设置的问题?或者是其他东西?

请随时自由离开回答或评论,如果您有任何想法。

一些代码,我写的是...

在Main.asp

<HTML> 
<HEAD> 
    <TITLE></TITLE> 
</HEAD> 
<BODY topmargin=4 leftmargin=10 bgcolor=wheat> 
    <FORM id=form01 name=form01 align=center enctype="multipart/form-data"> 
    <TABLE width=100% align=center> 
     <TR> 
     <TH> 
     <FIELDSET> 
      <TABLE> 
      <TR> 
       <TD colspan=2> 
       <INPUT type=file id=file01 name=file01 style="WIDTH: 400 px" value="Preview"> 
      <TR> 
      </TABLE> 
     </FIELDSET> 
     </TH></TR> 
    </TABLE>  
    <INPUT type=hidden id=tgtdir name=tgtdir value="AAA"> 
    </FORM> 
    <DIV> 
    <IFRAME id=frameUpload name=frameUpload > 
    </IFRAME> 
    </DIV> 
</BODY> 
</HTML> 

在fileupload.asp

<HTML> 
<HEAD> 
    <TITLE></TITLE> 
</HEAD> 
<BODY> 
<% 
On Error Resume Next 
    Dim mySmartUpload 
    Dim intCount 

    Set mySmartUpload = Server.CreateObject("aspSmartUpload.SmartUpload") 

    mySmartUpload.CodePage = "utf-8" 
    mySmartUpload.Upload 

    Set fso = Server.CreateObject("Scripting.FileSystemObject") 
    tgtdir = mySmartUpload.Form("tgtdir").Values 

    intCount = mySmartUpload.Save(tgtdir & "\") 
%> 
</BODY> 
</HTML> 
+0

你使用任何fileupload.asp上传组件?也许你应该[编辑]并显示该页面的代码。 – SearchAndResQ

+0

即使我注释掉更新组件,仍然无法获取参数。 –

+1

目前还不清楚发生了什么事,你都没有介绍你是否得到一个错误等等。话虽如此,如果你正在使用的上传组件,表单*(你还没有表现出这样只能假设)*可能使用['multipart/form-data'](https://stackoverflow.com/a/4526286/692942)发送,意味着'request.BinaryRead()'将用在'fileupload.asp'中。有趣的是,一旦'Request.BinaryRead()'被调用使Request.Form集合无效,这就是为什么大多数上传组件都提供它们自己的集合来存储表单参数。这可以解释为什么Request.Form调用不起作用。 – Lankymart

回答

0

现在你提供了一些关键信息最初失踪的mation我可能会提供帮助。

虽然什么I said in the commentsRequest.BinaryRead()一起约Request.Form是正确的,我不认为这是问题(从original revision of the question混乱)。

事实上,我相信@Vanquished Wombatsaid

那么,什么是aspSmartUpload? This page说:“一个32位库,以方便通过ASP Classic和IIS进行文件上传。”

更接近。

所以我做了一个小挖(因为我不使用aspSmartUpload自己)和事实证明,(根据last reported scan of the siteWayback Machine 2008年1月之前的某个时候:

的aspSmart系列产品已停产。

虽然没有错,这本身它没有让我觉得他们可能并没有释放组件的64位版本,所以这个问题是要试图运行32位COM DLL在64位环境中。

我已经谈过很多次,但对于你需要得到它的工作看Error ASP 0177: 8007007e Server.CreateObject fails for COM DLL什么彻底破裂。

是什么奇怪的是你还没有发布一个错误。如果DLL未在32位子系统中正确注册,或者IIS站点未运行,则它是32位模式下的应用程序池,我希望发生某种错误。

我的建议是要经过这个问题的答案的步骤,并核对您的设置,甚至有一个COM DLL清单在底部为您核对。

+0

aspSmartUpload需要两个dll。当我把它放在\\ nposvrtw1t2 \ C $ \ Windows \ SysWOW64并重新regsvr32他们!没关系 –

+0

很高兴知道,所以IIS应用程序池已经在32位模式下运行。另外,不需要将DLL移入SysWOW64目录。我的首选方法是导航到存在文件的文件夹,然后明确调用regsvr32.exe,在您的示例中它将是aspSmartUpload目录中的“C:\ Windows \ SysWOW64 \ regsvr32 dllfilename.dll”。将DLL移入系统文件夹也可以,但不是必需的。 – Lankymart