添加收藏
 系统管理
 联系方式
  汉南在线网页设计Asp动态程序

如何解决windows2003下eWebEditor上传文件时img.htm提示脚本错误
作  者:汉南居士
关键字:ASP技术应用



终于客户那边又现了奇怪的问题。代码在我这边一切正常,到了那边的服务器就变成了“脚本错误:d_file.myform.uploadfile为空或不是对象”

好,怎么解决呢。问题都没办法在本地重现。一直以为代码写得不安全,在那儿重新检查这套组件的源代码,结果最后网上有人说是服务器端的杀毒软件把adodb.stream对象当作恶意脚本屏蔽了。一边感叹现在的杀毒软件真是聪明、智能阿,一边批量替换。

Set tStream = Server.CreateObject ("ADODB.Stream")
改为:
Set tStream = Server.CreateObject ("ADODB." & "Stream")

用来骗过杀毒软件的。

结果问题依旧!令人震怒!!网上那些解决方法都是你抄我我抄你,自己测试过没有?!

只好硬着头皮再去查问题。亲自跑道客户那儿,原来是widnows2003操作系统。

以下是解决方案:

1、打开这个网址找到出错的行:

....../eWebEditor/asp/upload.asp?style=coolblue&type=image

我这边出错的居然是一行中文注释!真不知道IIS6.0怎么搞的。去掉这一行后一切恢复正常!

莫非网上那些出问题的同志们都是因为修改了它上传位置的源代码并且做了注释的结果?

2、接着,因为2003有上传下载的大小限制,还必须把这一块改掉。

1、先在服务里关闭 iis admin service 服务。
2、找到 c:\windows\system32\inetsrv\ 下的 metabase.xml 文件。
3、用记事本打开,找到 ASPMaxRequestEntityAllowed
把它修改为需要的值(可修改为10M即:10240000),默认为:204800,即:200K。
4、找到 AspBufferingLimit 把它修改为需要的值(可修改为20M即:20480000)。
5、保存metabase.xml 文件,然后启动 iis admin service和World Wide Web Publishing Service 服务。

3、最后发我自己的upload.asp,有需要的可以像我一样改存取路径和存取限制。用粉红色标记了


<%
'######################################
' eWebEditor v3.70 - Advanced online browser based WYSIWYG HTML editor.
' Copyright (c) 2003-2005 eWebEditor.com
'
' For further information go to http://www.ewebeditor.com/
' This copyright notice MUST stay intact for use.
'######################################

Session("eWebEditor_Original_CodePage") = Session.CodePage
Session.CodePage = 65001

%>
<!--#include file="config.asp"-->
<!--#include file="upfileclass.asp"-->

<%
Server.ScriptTimeOut = 1800

Dim sType, sStyleName, sLanguage
Dim sAllowExt, nAllowSize, sUploadDir, nUploadObject, nAutoDir, sBaseUrl, sContentPath
Dim sFileExt, sOriginalFileName, sSaveFileName, sPathFileName, nFileNum
Dim nSLTFlag, nSLTMinSize, nSLTOkSize, nSYFlag, sSYText, sSYFontColor, nSYFontSize, sSYFontName, sSYPicPath, nSLTSYObject, sSLTSYExt, nSYMinSize, sSYShadowColor, nSYShadowOffset


Call InitUpload()


Dim sAction
sAction = UCase(Trim(Request.QueryString("action")))

Select Case sAction
Case "REMOTE"
 Call DoCreateNewDir()
 Call DoRemote()
Case "SAVE"
 Call ShowForm()
 Call DoCreateNewDir()
 Call DoSave()
Case Else
 Call ShowForm()
End Select

Session.CodePage = Session("eWebEditor_Original_CodePage")


Sub ShowForm()
%>
<HTML>
<HEAD>
<TITLE>eWebEditor</TITLE>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<script language="javascript" src="../dialog/dialog.js"></script>
<link href='../language/<%=sLanguage%>.css' type='text/css' rel='stylesheet'>
<link href='../dialog/dialog.css' type='text/css' rel='stylesheet'>
</head>
<body class=upload>

<form action="?action=save&type=<%=sType%>&style=<%=sStyleName%>&language=<%=sLanguage%>" method=post name=myform enctype="multipart/form-data">
<input type=file name=uploadfile size=1 style="width:100%" onChange="originalfile.value=this.value">
<input type=hidden name=originalfile value="">
</form>

<script language=javascript>
var sAllowExt = "<%=sAllowExt%>";

function CheckUploadForm() {
 if (!IsExt(document.myform.uploadfile.value,sAllowExt)){
  parent.UploadError('lang["ErrUploadInvalidExt"]+":'+sAllowExt+'"');
  return false;
 }
 return true
}

var oForm = document.myform ;
oForm.attachEvent("onsubmit", CheckUploadForm) ;
if (! oForm.submitUpload) oForm.submitUpload = new Array() ;
oForm.submitUpload[oForm.submitUpload.length] = CheckUploadForm ;
if (! oForm.originalSubmit) {
 oForm.originalSubmit = oForm.submit ;
 oForm.submit = function() {
  if (this.submitUpload) {
   for (var i = 0 ; i < this.submitUpload.length ; i++) {
    this.submitUpload[i]() ;
   }
  }
  this.originalSubmit() ;
 }
}

try {
 parent.UploadLoaded();
}
catch(e){
}

</script>

</body>
</html>
<%
End Sub


Sub DoSave()

 ' ASP-Upload and SA-FileUp are not available in trial version.
 Call DoUpload_Class()
 
 ' Thumbnail image, textual watermark and image watermark are not available in trial version.
 Dim s_SmallImageFile, s_SmallImagePathFile, s_SmallImageScript
 s_SmallImagePathFile = ""
 s_SmallImageScript = ""
 s_SmallImageFile = ""

 sPathFileName = sContentPath & sSaveFileName
 Call OutScript("parent.UploadSaved('" & sPathFileName & "','" & s_SmallImagePathFile & "');var obj=parent.dialogArguments.dialogArguments;if (!obj) obj=parent.dialogArguments;try{obj.addUploadFile('" & sOriginalFileName & "', '" & sSaveFileName & "', '" & sPathFileName & "');} catch(e){} " & s_SmallImageScript)

End Sub

sub myAlert(str)
 call OutScript ("alert('"&str&"');" )
end sub

Sub DoRemote()
 Dim sContent, i
 For i = 1 To Request.Form("eWebEditor_UploadText").Count
  sContent = sContent & Request.Form("eWebEditor_UploadText")(i)
 Next
 If sAllowExt <> "" Then
  sContent = ReplaceRemoteUrl(sContent, sAllowExt)
 End If

 Response.Write "<HTML><HEAD><TITLE>eWebEditor</TITLE><meta http-equiv='Content-Type' content='text/html; charset=utf-8'></head><body>" & _
  "<input type=hidden id=UploadText value=""" & inHTML(sContent) & """>" & _
  "</body></html>"

 Call OutScriptNoBack("parent.setHTML(UploadText.value);try{parent.addUploadFile('" & sOriginalFileName & "', '" & sSaveFileName & "', '" & sPathFileName & "');} catch(e){} parent.remoteUploadOK();")

End Sub


Sub DoCreateNewDir()
 ' Automatically Create Directory is not available in trial version.
End Sub

Sub DoUpload_Class()
 On Error Resume Next
 Dim oUpload, oFile
 Set oUpload = New upfile_class

 oUpload.GetData nAllowSize*1024

 If oUpload.Err > 0 Then
  Select Case oUpload.Err
  Case 1
   Call OutScript("parent.UploadError('lang[""ErrUploadInvalidFile""]')")
  Case 2
   Call OutScript("parent.UploadError('lang[""ErrUploadSizeLimit""]+"":" & nAllowSize & "KB""')")
  End Select
 End If

 Set oFile = oUpload.File("uploadfile")
 sFileExt = LCase(oFile.FileExt)
 Call CheckValidExt(sFileExt)
 sOriginalFileName = oFile.FileName
 sSaveFileName = GetRndFileName(sFileExt)

 Dim str_Mappath
 str_Mappath = Server.Mappath(sUploadDir & sSaveFileName)
 sFileExt = LCase(Mid(str_Mappath, InstrRev(str_Mappath, ".") + 1))
 Call CheckValidExt(sFileExt)

 oFile.SaveToFile str_Mappath
 
 Set oFile = Nothing
 Set oUpload = Nothing
End Sub

Function GetRndFileName(sExt)
 Dim sRnd
 Randomize
 sRnd = Int(900 * Rnd) + 100
 GetRndFileName = FormatTime(Now(), 5) & sRnd & "." & sExt
End Function

Sub OutScript(str)
 Response.Write "<script language=javascript>" & str & ";history.back()</script>"
 Session.CodePage = Session("eWebEditor_Original_CodePage")
 Response.End
End Sub
Sub OutScriptNoBack(str)
 Response.Write "<script language=javascript>" & str & "</script>"
End Sub

Sub CheckValidExt(sExt)
 Dim b, i, aExt
 b = False
 aExt = Split(sAllowExt, "|")
 For i = 0 To UBound(aExt)
  If LCase(aExt(i)) = sExt Then
   b = True
   Exit For
  End If
 Next
 If b = False Then
  Call OutScript("parent.UploadError('lang[""ErrUploadInvalidExt""]+"":" & sAllowExt & """')")
 End If
End Sub

Sub InitUpload()
 sType = UCase(Trim(Request.QueryString("type")))
 sStyleName = Trim(Request.QueryString("style"))
 sLanguage = Trim(Request.QueryString("language"))

 Dim i, aStyleConfig, bValidStyle
 bValidStyle = False
 For i = 1 To Ubound(aStyle)
  aStyleConfig = Split(aStyle(i), "|||")
  If Lcase(sStyleName) = Lcase(aStyleConfig(0)) Then
   bValidStyle = True
   Exit For
  End If
 Next

 If bValidStyle = False Then
  OutScript("parent.UploadError('lang[""ErrInvalidStyle""]')")
 End If

 sBaseUrl = aStyleConfig(19)
 nUploadObject = Clng(aStyleConfig(20))
 nAutoDir = CLng(aStyleConfig(21))

 sUploadDir = aStyleConfig(3)
 If Left(sUploadDir, 1) <> "/" Then
  sUploadDir = "../" & sUploadDir
 End If
 这一段用来改变上传位置
 if session("courseid")>=20000000 then
  session("courseidRE")=session("courseid")-10000000
 else
  session("courseidRE")=session("courseid")
 end if
 sUploadDir="../../../userfile/"&session("courseidRE")&"//Upfiles/"

 Select Case sBaseUrl
 Case "0"
  sContentPath = aStyleConfig(23)
 Case "1"
  sContentPath = RelativePath2RootPath(sUploadDir)
 Case "2"
  sContentPath = RootPath2DomainPath(RelativePath2RootPath(sUploadDir))
 End Select

这一段从我的原始数据库中读取上传文件大小以及合法扩展名的信息

 db="../../../database/Data.mdb"
 Set conn = Server.CreateObject("ADODB.Connection")
 connstr="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.Mappath(db)
 conn.CursorLocation = 3'adUseClient
 conn.Open connstr
 dim rs
 Set rs =Server.CreateObject("ADODB.recordset")
 sql="select * from config"
 set rs=conn.execute(sql)
 if not rs.eof then
  sAllowExt=rs("uploadfiletype")
  nAllowSize=rs("uploadfilesize")
 end if
 
 nSLTFlag = Clng(aStyleConfig(29))
 nSLTMinSize = Clng(aStyleConfig(30))
 nSLTOkSize = Clng(aStyleConfig(31))
 nSYFlag = Clng(aStyleConfig(32))
 sSYText = aStyleConfig(33)
 sSYFontColor = aStyleConfig(34)
 nSYFontSize = Clng(aStyleConfig(35))
 sSYFontName = aStyleConfig(36)
 sSYPicPath = aStyleConfig(37)
 nSLTSYObject = Clng(aStyleConfig(38))
 sSLTSYExt = aStyleConfig(39)
 nSYMinSize = Clng(aStyleConfig(40))
 sSYShadowColor = aStyleConfig(41)
 nSYShadowOffset = Clng(aStyleConfig(42))

End Sub

 

Function RelativePath2RootPath(url)
 Dim sTempUrl
 sTempUrl = url
 If Left(sTempUrl, 1) = "/" Then
  RelativePath2RootPath = sTempUrl
  Exit Function
 End If

 Dim sWebEditorPath
 sWebEditorPath = Request.ServerVariables("SCRIPT_NAME")
 sWebEditorPath = Left(sWebEditorPath, InstrRev(sWebEditorPath, "/") - 1)
 Do While Left(sTempUrl, 3) = "../"
  sTempUrl = Mid(sTempUrl, 4)
  sWebEditorPath = Left(sWebEditorPath, InstrRev(sWebEditorPath, "/") - 1)
 Loop
 RelativePath2RootPath = sWebEditorPath & "/" & sTempUrl
End Function

Function RootPath2DomainPath(url)
 Dim sHost, sPort
 sHost = Split(Request.ServerVariables("SERVER_PROTOCOL"), "/")(0) & "://" & Request.ServerVariables("HTTP_HOST")
 sPort = Request.ServerVariables("SERVER_PORT")
 If sPort <> "80" Then
  sHost = sHost & ":" & sPort
 End If
 RootPath2DomainPath = sHost & url
End Function

Function ReplaceRemoteUrl(sHTML, sExt)
 ' ---------------------------------------------------------------
 ' By Guidy 2005-11-10
 ' 禁用远程附件自动上传
 ' 为了使用者方便操作,我设置了开关,即使是菜鸟也能够很方便的修改
 ' 参数:IsOpenAutoSave,1=打开上传借口,否则为关闭
 Const IsOpenAutoSave = 1
 If IsOpenAutoSave <> 1 Then Exit Function
 ' ---------------------------------------------------------------
 Dim s_Content
 s_Content = sHTML
 If IsObjInstalled("Microsoft.XMLHTTP") = False then
  ReplaceRemoteUrl = s_Content
  Exit Function
 End If
 
 Dim re, RemoteFile, RemoteFileurl, SaveFileName, SaveFileType
 Set re = new RegExp
 re.IgnoreCase  = True
 re.Global = True
 re.Pattern = "((http|https|ftp|rtsp|mms):(\/\/|\\\\){1}(([A-Za-z0-9_-])+[.]){1,}(net|com|cn|org|cc|tv|[0-9]{1,3})([^ \f\n\r\t\v\""\'\>]*\/)(([^ \f\n\r\t\v\""\'\>])+[.]{1}(" & sExt & ")))"

 Set RemoteFile = re.Execute(s_Content)
 Dim a_RemoteUrl(), n, i, bRepeat
 n = 0
 ' to no repeat array
 For Each RemoteFileurl in RemoteFile
  If n = 0 Then
   n = n + 1
   Redim a_RemoteUrl(n)
   a_RemoteUrl(n) = RemoteFileurl
  Else
   bRepeat = False
   For i = 1 To UBound(a_RemoteUrl)
    If UCase(RemoteFileurl) = UCase(a_RemoteUrl(i)) Then
     bRepeat = True
     Exit For
    End If
   Next
   If bRepeat = False Then
    n = n + 1
    Redim Preserve a_RemoteUrl(n)
    a_RemoteUrl(n) = RemoteFileurl
   End If
  End If  
 Next
 ' start replace
 nFileNum = 0
 For i = 1 To n
  SaveFileType = Mid(a_RemoteUrl(i), InstrRev(a_RemoteUrl(i), ".") + 1)
  SaveFileName = GetRndFileName(SaveFileType)
  If SaveRemoteFile(SaveFileName, a_RemoteUrl(i)) = True Then
   nFileNum = nFileNum + 1
   If nFileNum > 0 Then
    sOriginalFileName = sOriginalFileName & "|"
    sSaveFileName = sSaveFileName & "|"
    sPathFileName = sPathFileName & "|"
   End If
   sOriginalFileName = sOriginalFileName & Mid(a_RemoteUrl(i), InstrRev(a_RemoteUrl(i), "/") + 1)
   sSaveFileName = sSaveFileName & SaveFileName
   sPathFileName = sPathFileName & sContentPath & SaveFileName
   s_Content = Replace(s_Content, a_RemoteUrl(i), sContentPath & SaveFileName, 1, -1, 1)
  End If
 Next

 ReplaceRemoteUrl = s_Content
End Function

Function SaveRemoteFile(s_LocalFileName, s_RemoteFileUrl)
 Dim Ads, Retrieval, GetRemoteData
 Dim bError
 bError = False
 SaveRemoteFile = False
 On Error Resume Next
 Set Retrieval = Server.CreateObject("Microsoft.XMLHTTP")
 With Retrieval
  .Open "Get", s_RemoteFileUrl, False, "", ""
  .Send
  GetRemoteData = .ResponseBody
 End With
 Set Retrieval = Nothing

 If LenB(GetRemoteData) > nAllowSize*1024 Then
  bError = True
 Else
  Set Ads = Server.CreateObject ("ADODB." & "Stream")
  With Ads
   .Type = 1
   .Open
   .Write GetRemoteData
   .SaveToFile Server.MapPath(sUploadDir & s_LocalFileName), 2
   .Cancel()
   .Close()
  End With
  Set Ads=nothing
 End If

 If Err.Number = 0 And bError = False Then
  SaveRemoteFile = True
 Else
  Err.Clear
 End If
End Function

Function IsObjInstalled(strClassString)
 On Error Resume Next
 IsObjInstalled = False
 Err = 0
 Dim xTestObj
 Set xTestObj = Server.CreateObject(strClassString)
 If 0 = Err Then IsObjInstalled = True
 Set xTestObj = Nothing
 Err = 0
End Function

Function inHTML(str)
 Dim sTemp
 sTemp = str
 inHTML = ""
 If IsNull(sTemp) = True Then
  Exit Function
 End If
 sTemp = Replace(sTemp, "&", "&amp;")
 sTemp = Replace(sTemp, "<", "&lt;")
 sTemp = Replace(sTemp, ">", "&gt;")
 sTemp = Replace(sTemp, Chr(34), "&quot;")
 inHTML = sTemp
End Function

Function FormatTime(s_Time, n_Flag)
 Dim y, m, d, h, mi, s
 FormatTime = ""
 If IsDate(s_Time) = False Then Exit Function
 y = cstr(year(s_Time))
 m = cstr(month(s_Time))
 If len(m) = 1 Then m = "0" & m
 d = cstr(day(s_Time))
 If len(d) = 1 Then d = "0" & d
 h = cstr(hour(s_Time))
 If len(h) = 1 Then h = "0" & h
 mi = cstr(minute(s_Time))
 If len(mi) = 1 Then mi = "0" & mi
 s = cstr(second(s_Time))
 If len(s) = 1 Then s = "0" & s
 Select Case n_Flag
 Case 1
  FormatTime = y & "-" & m & "-" & d & " " & h & ":" & mi & ":" & s
 Case 2
  FormatTime = y & "-" & m & "-" & d
 Case 3
  FormatTime = h & ":" & mi & ":" & s
 Case 4
  FormatTime = y & m & d
 Case 5
  FormatTime = y & m & d & h & mi & s
 End Select
End Function
%>



来源:互联网
阅读:770
日期:2006-9-22

【 双击滚屏 】 【 推荐朋友 】 【 收藏 】 【 打印 】 【 关闭 】 【 字体: 】 
上一篇:把ACCESS转成SQL数据库
下一篇:ACCESS中使用SQL语句应注意的地方及几点技巧

  >> 相关文章
 
  ·ASP初学者常用代码
  ·ASP提速技巧五则
  ·ASP中生成静态页面技术
  ·绝妙的asp生成静态页面
  ·一个用asp生成html的新方法
  ·使用ASP生成HTML文件
  ·asp生成htm
  ·用几行Asp代码实现防止表单多次被提交

5.12汶川大地震遇难同胞默哀 | 汉南在线总站 | 网站建设 | BT电影下载 | 汉南在线博客 | 流行购商城

授权使用:汉南在线 http://hnzx.hzwz.net/
经营许可证:陕ICP备05000109号 Powered by:汉南在线  
Copyright (c) 2002-2008 汉南在线. All Rights Reserved .