我正在使用下载的纯 ASP 脚本来上传文件。我的表单包含一个文本区域和一个文件上传组件。当我输入常规文本时它工作正常,但当我从具有特殊字符的单词中复制并粘贴某些内容时它无法处理。我收到的错误是:
提供商错误“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
知道如何解决吗?
我知道这是一个老问题,但由于没有答案,而且我遇到了完全相同的问题并最终找到了解决方案,我认为分享它会很好。
问题与 IIS 版本有关,因为它在 IIS6 上工作正常,但当我们迁移到 IIS8.5 时停止工作
参见阅读文本
默认 ReadText 参数为 -1 (adReadAll)。
由于某种原因,这个默认参数似乎不适用于 IIS8.5。您必须输入您要阅读的文本长度。
所以 ReadText(2000) 可以正常工作。
当然,您必须计算出最大长度或找到一种循环并读取所有内容的方法
微软金融时报:
如果 NumChar 大于流中剩余的字符数,则仅返回剩余的字符。读取的字符串不会被填充以匹配 NumChar 指定的长度。如果没有剩余字符可供读取,则返回值为 null 的变体。 ReadText 不能用于向后阅读。
我得到了我的数据。我只写两次“ReadText”:)
strData = objStream.ReadText(1) // return first char
strData = strData & objStream.ReadText(-1) // returm full text