/ Forside / Teknologi / Udvikling / ASP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
ASP
#NavnPoint
smorch 9259
Harlekin 1866
molokyle 1040
Steffanst.. 758
gandalf 657
smilly 564
gibson 560
cumano 530
MouseKeep.. 480
10  Random 410
Request.Form og BinaryRead passer ikke sam~
Fra : Jakob Munck


Dato : 29-05-02 14:29

Jeg ved ved at lave en tekst-upload funktion til min site, og den virker
fint når jeg uploader .htm og .jpg filer, som den skal. Men jeg vil også
gerne skrive noget tekst i en form, som kommentar til de uploadede filer, og
det går ikke så godt. Jeg forsøger at sende formindholdet og de binære filer
op samtidig, og det er åbenbart ikke helt let, for jeg får følgende
fejlmelding:

BinaryRead kan ikke kaldes, når Request.Form-samling er brugt.
/Topdating/www/upload_text/Loader.asp, line 27 (linien hvor jeg har sat "
+++" )

Her er den include-fil, der meldes fejl i:

<%

Class Loader
Private dict

Private Sub Class_Initialize
Set dict = Server.CreateObject("Scripting.Dictionary")
End Sub

Private Sub Class_Terminate
If IsObject(intDict) Then
intDict.RemoveAll
Set intDict = Nothing
End If
If IsObject(dict) Then
dict.RemoveAll
Set dict = Nothing
End If
End Sub

Public Property Get Count
Count = dict.Count
End Property

Public Sub Initialize
Dim binData
+++ binData = Request.BinaryRead(Request.TotalBytes)
getData binData
End Sub

Public Function getFileData(name)
If dict.Exists(name) Then
getFileData = dict(name).Item("Value")
Else
getFileData = stringToByte("Not Found")
End If
End Function

Public Function getValue(name)
If dict.Exists(name) Then
getValue = CStr(dict(name).Item("Value"))
Else
getValue = "Not Found"
End If
End Function

Public Function getFileName(name)
If dict.Exists(name) Then
Dim temp, tempPos
temp = dict(name).Item("FileName")
tempPos = 1 + InStrRev(temp, "\")
getFileName = Mid(temp, tempPos)
Else
getFileName = "Not Found"
End If
End Function

Public Function getFilePath(name)
If dict.Exists(name) Then
Dim temp, tempPos
temp = dict(name).Item("FileName")
tempPos = InStrRev(temp, "\")
getFilePath = Mid(temp, 1, tempPos)
Else
getFilePath = "Not Found"
End If
End Function

Public Function getFilePathComplete(name)
If dict.Exists(name) Then
getFilePathComplete = dict(name).Item("FileName")
Else
getFilePathComplete = "Not Found"
End If
End Function

Public Function getFileSize(name)
If dict.Exists(name) Then
getFileSize = LenB(dict(name).Item("Value"))
Else
getFileSize = "Not Found"
End If
End Function

Public Function getFileSizeTranslated(name)
If dict.Exists(name) Then
temp = 1 + LenB(dict(name).Item("Value"))
If Len(temp) <= 3 Then
getFileSizeTranslated = temp & " bytes"
ElseIf Len(temp) > 6 Then
temp = FormatNumber(((temp / 1024) / 1000), 2)
getFileSizeTranslated = temp & " megabytes"
Else
temp = FormatNumber((temp / 1024), 2)
getFileSizeTranslated = temp & " kilobytes"
End If
Else
getFileSize = "Not Found"
End If
End Function

Public Function getContentType(name)
If dict.Exists(name) Then
getContentType = dict(name).Item("ContentType")
Else
getContentType = "Not Found"
End If
End Function

Private Sub getData(rawData)
Dim separator
separator = MidB(rawData, 1, InstrB(1, rawData, ChrB(13)) - 1)

Dim lenSeparator
lenSeparator = LenB(separator)

Dim currentPos
currentPos = 1
Dim inStrByte
inStrByte = 1
Dim value, mValue
Dim tempValue
tempValue = ""

While inStrByte > 0
inStrByte = InStrB(currentPos, rawData, separator)
mValue = inStrByte - currentPos

If mValue > 1 Then
value = MidB(rawData, currentPos, mValue)

Dim begPos, endPos, midValue, nValue
Dim intDict
Set intDict = Server.CreateObject("Scripting.Dictionary")

begPos = 1 + InStrB(1, value, ChrB(34))
endPos = InStrB(begPos + 1, value, ChrB(34))
nValue = endPos

Dim nameN
nameN = MidB(value, begPos, endPos - begPos)

Dim nameValue
If InStrB(1, value, stringToByte("Content-Type")) > 1 Then

begPos = 1 + InStrB(endPos + 1, value, ChrB(34))
endPos = InStrB(begPos + 1, value, ChrB(34))

midValue = MidB(value, begPos, endPos - begPos)
intDict.Add "FileName", trim(byteToString(midValue))

begPos = 14 + InStrB(endPos + 1, value, stringToByte("Content-Type:"))
endPos = InStrB(begPos, value, ChrB(13))

midValue = MidB(value, begPos, endPos - begPos)
intDict.Add "ContentType", trim(byteToString(midValue))

begPos = endPos + 4
endPos = LenB(value)

nameValue = MidB(value, begPos, endPos - begPos)
Else
nameValue = trim(byteToString(MidB(value, nValue + 5)))
End If

intDict.Add "Value", nameValue
intDict.Add "Name", nameN

dict.Add byteToString(nameN), intDict
End If

currentPos = lenSeparator + inStrByte
Wend
End Sub

End Class

Private Function stringToByte(toConv)
Dim tempChar
For i = 1 to Len(toConv)
tempChar = Mid(toConv, i, 1)
stringToByte = stringToByte & chrB(AscB(tempChar))
Next
End Function

Private Function byteToString(toConv)
For i = 1 to LenB(toConv)
byteToString = byteToString & chr(AscB(MidB(toConv,i,1)))
Next
End Function
%>

Kort sagt:

Hvad gør jeg, for at kunne uploade kommentar til databasen i samme funktion
hvor de binære filer bliver uploadet?

v.h.
Jakob Munck




 
 
Jakob Andersen (29-05-2002)
Kommentar
Fra : Jakob Andersen


Dato : 29-05-02 14:17

Jakob Munck wrote:
> Jeg ved ved at lave en tekst-upload funktion til min site, og den
> virker fint når jeg uploader .htm og .jpg filer, som den skal. Men
> jeg vil også gerne skrive noget tekst i en form, som kommentar til de
> uploadede filer, og det går ikke så godt.

Du skal implementere Form kollektionen i din Uploadklasse, der findes et
glimrende eksempel på hvordan det kan gøres på nedenstående side:
<http://www.asp101.com/articles/jacob/scriptupload.asp>

--
Jakob Andersen



Jakob Munck (29-05-2002)
Kommentar
Fra : Jakob Munck


Dato : 29-05-02 16:04

Fint link. Jeg har brugt denne kode til at løse problemet. Tak for det,
endnu en gang!

v.h.
Jakob Munck



Lars B. Jensen (29-05-2002)
Kommentar
Fra : Lars B. Jensen


Dato : 29-05-02 17:13

"Jakob Andersen" <jakob@effectus.dk> wrote in message
news:ad2kem$1bd$1@sunsite.dk...
> Jakob Munck wrote:

> > jeg vil også gerne skrive noget tekst i en form, som kommentar til de
> > uploadede filer, og det går ikke så godt.

> Du skal implementere Form kollektionen i din Uploadklasse, der findes et
> glimrende eksempel på hvordan det kan gøres på nedenstående side:
> <http://www.asp101.com/articles/jacob/scriptupload.asp>

Aaaalt for fedt! Jeg har haft samme problem, hvor jeg efter upload har været
nød til at sende folk til en anden side, for at de kunne indtaste ekstra
data om det de uploaded!

Tak! Du er bare alletiders..... tak! :)

> --
> Jakob Andersen

Lars B



Søg
Reklame
Statistik
Spørgsmål : 177559
Tips : 31968
Nyheder : 719565
Indlæg : 6408938
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste