我使用下载的纯ASP脚本上传文件。我的表单包含textarea和文件上传组件。当我输入常规文本时它工作正常,但是当我从具有特殊字符的单词复制和粘贴时,它无法处理。我得到的错误是:
提供商错误' 80070057'
参数不正确。
/forum/freeaspupload.asp,第309行
我抛出错误的代码部分是:
Private Function ConvertUtf8BytesToString(start, length)
StreamRequest.Position = 0
Dim objStream
Dim strTmp
' init stream
Set objStream = Server.CreateObject("ADODB.Stream")
objStream.Charset = "utf-8"
objStream.Mode = adModeReadWrite
objStream.Type = adTypeBinary
objStream.Open
' write bytes into stream
StreamRequest.Position = start+1
StreamRequest.CopyTo objStream, length
objStream.Flush
' rewind stream and read text
objStream.Position = 0
objStream.Type = adTypeText
strTmp = objStream.ReadText
' close up and return
objStream.Close
Set objStream = Nothing
ConvertUtf8BytesToString = strTmp
End Function
第309行是行:
strTmp = objStream.ReadText
知道怎么解决吗?
答案 0 :(得分:4)
我知道这是一个老问题,但由于没有答案,我得到了完全相同的问题,最后找到了解决方案,我认为分享它可能会很好。
问题与IIS版本有关,因为它在IIS6上工作正常但在我们迁移到IIS8.5时停止工作
请参阅ReadText
通过defaut ReadText参数为-1(adReadAll)。
由于某种原因,此默认参数似乎不适用于IIS8.5。您必须输入要阅读的文本的长度。
所以ReadText(2000)会正常工作。
当然,您必须找出最大长度或找到循环和阅读所有内容的方法
通过MSFT:
如果NumChar超过流中剩余的字符数,则只返回剩余的字符数。字符串读取未填充以匹配NumChar指定的长度。如果没有要读取的字符,则返回值为null的变量。 ReadText不能用于向后阅读。