gpt4 book ai didi

asp-classic - ADODB.Stream ReadText 错误

转载 作者:行者123 更新时间:2023-12-04 03:25:56 29 4
gpt4 key购买 nike

我正在使用下载的纯 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

知道如何修复它吗?

最佳答案

我知道这是一个老问题,但由于没有答案而且我遇到了完全相同的问题并最终找到了解决方案,我认为分享它会很好。

该问题与 IIS 版本有关,因为它在 IIS6 上运行良好,但在我们移至 IIS8.5 时停止工作

ReadText

默认的 ReadText 参数是 -1 (adReadAll)。

出于某种原因,这个默认参数似乎不适用于 IIS8.5。您必须输入要阅读的文本的长度。

所以 ReadText(2000) 会正常工作。

当然,您必须找出最大长度或找到一种循环读取所有内容的方法

通过微软:

If NumChar is more than the number of characters left in the stream, only the characters remaining are returned. The string read is not padded to match the length specified by NumChar. If there are no characters left to read, a variant whose value is null is returned. ReadText cannot be used to read backwards.

关于asp-classic - ADODB.Stream ReadText 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24396500/

29 4 0