Jag har ett litet problem, jag har vetat hur man gör förut men nu har jag glömt det. Vad får du för felmedelande? Ok... det är fixat men nu får jag ett annat felmedelande.. oj det ser lite konsigt ut.... Verkar som PosEnd retunerar 0.FileSystemObjexct m.m.m.m
I denna kod så skriver asp programmet några rader till en fil, men varje gång den skriver till filen så skriver den över det existarande innehållet.
Vad är felet?
Dim F, T, Fil, Namn, Amne, Grad, Av, Betyg
Fil = Request.Form("blob")
Namn = Request.Form("T4")
Amne = Request.Form("R1")
Grad = Request.form("R2")
Av = Request.Form("T2")
Betyg = Request.Form("R3")
Set F = CreateObject("Scripting.FileSystemObject")
Set T = F.CreatTextFile(Server.mappath("fil\fileindex.dat"),1)
If Fil <> "" and Amne <> "" and Av <> "" Then
T.WriteLine Fil
T.WriteLine Namn
T.WriteLine Amne
T.WriteLine Grad
T.WriteLine Av
T.WriteLine Betyg
T.Close
Else
%><b>Du måste fylla i alla rutor!</b><%
end ifSv: FileSystemObjexct m.m.m.m
Kan bero på rättigheter i katalogen du sparar filen i, hur du skickar formulärdat, etc...
Lite förslag på förändringar:
* Flytta ned CreateObject och OpenTextFile i Ifsattsen, Onödig att öppna filen om du inte ska göra något med den.
* Spara text i tabseparerat format. Lättare att läsa
* Create = True i OpenFile. Om filen inte existerar
Dim F, T, Fil, Namn, Amne, Grad, Av, Betyg
Fil = Request.Form("blob")
Namn = Request.Form("T4")
Amne = Request.Form("R1")
Grad = Request.form("R2")
Av = Request.Form("T2")
Betyg = Request.Form("R3")
If Fil <> "" and Amne <> "" and Av <> "" Then
Set F = CreateObject("Scripting.FileSystemObject")
Set T = F.OpenTextFile(Server.mappath("fil\fileindex.dat"),8,True)
T.WriteLine Fil & vbTab & Namn & vbTab & Amne & vbTab & Grad & vbTab & Av & vbTab & Betyg
T.Close
Else
%>Du måste fylla i alla rutor!<%
end if
Hoppas det är till någon hjälp...Sv: FileSystemObjexct m.m.m.m
Det är MidB på rad 70, ogiltigtprocedur anrop eller argument....
Det konstiga är att den funkade förut..... hmmmmm
Här är coden:
<%
' Author Philippe Collignon
Response.Expires=0
Response.Buffer = TRUE
Response.Clear
'Response.BinaryWrite(Request.BinaryRead(Request.TotalBytes))
byteCount = Request.TotalBytes
'Response.BinaryWrite(Request.BinaryRead(varByteCount))
RequestBin = Request.BinaryRead(byteCount)
Dim UploadRequest, Namn, Amne, Grad, Av, Betyg
Set UploadRequest = CreateObject("Scripting.Dictionary")
BuildUploadRequest RequestBin
'email = UploadRequest.Item("email").Item("Value")
contentType = UploadRequest.Item("blob").Item("ContentType")
filepathname = UploadRequest.Item("blob").Item("FileName")
filename = Right(filepathname,Len(filepathname)-InstrRev(filepathname,"\"))
Namn = Request.Form("T4")
Amne = Request.Form("R1")
Grad = Request.form("R2")
Av = Request.Form("T2")
Betyg = Request.Form("R3")
If Ucase(right(filename,4)) = ".ZIP" and Amne <> "" and Av <> "" then
value = UploadRequest.Item("blob").Item("Value")
'Create FileSytemObject Component
Set ScriptObject = Server.CreateObject("Scripting.FileSystemObject")
nfil = now & date & ".ZIP"
'Create and Write to a File
pathEnd = Len(Server.mappath(Request.ServerVariables("PATH_INFO")))-14
Set MyFile = ScriptObject.CreateTextFile(Left(Server.mappath(Request.ServerVariables("PATH_INFO")),pathEnd) & nfil)
For i = 1 to LenB(value)
MyFile.Write chr(AscB(MidB(value,i,1)))
Next
MyFile.Close
Set F = CreateObject("Scripting.FileSystemObject")
Set T = F.OpenTextFile(Server.mappath("fil\fileindex.dat"),8)
T.WriteLine nfil
T.WriteLine Namn
T.WriteLine Amne
T.WriteLine Grad
T.WriteLine Av
T.WriteLine Betyg
T.WriteLine byteCount
T.Close
%>
<b>Tack för att du skickar upp ditt skolarbete till Sveriges Skolarbeten<BR>
<%
Else
%>Ett fel har uppstått, felet kan vara nåt av följande alternativ:<br>Filen måste vara en .zip fil...<br>Du har glömt att fylla i alla rutor...<%
End if
%>
<%
Sub BuildUploadRequest(RequestBin)
'Get the boundary
PosBeg = 1
PosEnd = InStrB(PosBeg,RequestBin,getByteString(chr(13)))
boundary = MidB(RequestBin,PosBeg,PosEnd - PosBeg)
boundaryPos = InstrB(1,RequestBin,boundary)
'Get all data inside the boundaries
Do until (boundaryPos=InstrB(RequestBin,boundary & getByteString("--")))
'Members variable of objects are put in a dictionary object
Dim UploadControl
Set UploadControl = CreateObject("Scripting.Dictionary")
'Get an object name
Pos = InstrB(BoundaryPos,RequestBin,getByteString("Content-Disposition"))
Pos = InstrB(Pos,RequestBin,getByteString("name="))
PosBeg = Pos+6
PosEnd = InstrB(PosBeg,RequestBin,getByteString(chr(34)))
Name = getString(MidB(RequestBin,PosBeg,PosEnd-PosBeg))
PosFile = InstrB(BoundaryPos,RequestBin,getByteString("filename="))
PosBound = InstrB(PosEnd,RequestBin,boundary)
'Test if object is of file type
If PosFile<>0 AND (PosFile<PosBound) Then
'Get Filename, content-type and content of file
PosBeg = PosFile + 10
PosEnd = InstrB(PosBeg,RequestBin,getByteString(chr(34)))
FileName = getString(MidB(RequestBin,PosBeg,PosEnd-PosBeg))
'Add filename to dictionary object
UploadControl.Add "FileName", FileName
Pos = InstrB(PosEnd,RequestBin,getByteString("Content-Type:"))
PosBeg = Pos+14
PosEnd = InstrB(PosBeg,RequestBin,getByteString(chr(13)))
'Add content-type to dictionary object
ContentType = getString(MidB(RequestBin,PosBeg,PosEnd-PosBeg))
UploadControl.Add "ContentType",ContentType
'Get content of object
PosBeg = PosEnd+4
PosEnd = InstrB(PosBeg,RequestBin,boundary)-2
Value = MidB(RequestBin,PosBeg,PosEnd-PosBeg)
Else
'Get content of object
Pos = InstrB(Pos,RequestBin,getByteString(chr(13)))
PosBeg = Pos+4
PosEnd = InstrB(PosBeg,RequestBin,boundary)-2
Value = getString(MidB(RequestBin,PosBeg,PosEnd-PosBeg))
End If
'Add content to dictionary object
UploadControl.Add "Value" , Value
'Add dictionary object to main dictionary
UploadRequest.Add name, UploadControl
'Loop to next object
BoundaryPos=InstrB(BoundaryPos+LenB(boundary),RequestBin,boundary)
Loop
End Sub
'String to byte string conversion
Function getByteString(StringStr)
For i = 1 to Len(StringStr)
char = Mid(StringStr,i,1)
getByteString = getByteString & chrB(AscB(char))
Next
End Function
'Byte string to string conversion
Function getString(StringBin)
getString =""
For intCount = 1 to LenB(StringBin)
getString = getString & chr(AscB(MidB(StringBin,intCount,1)))
Next
End Function
%>Sv: FileSystemObjexct m.m.m.m
forumet kan visst inte ta BOLD taggarna....Sv: FileSystemObjexct m.m.m.m
Vilket inebär att RequestBin är tom eller saknar radbrytning.
PosEnd = InStrB(PosBeg,RequestBin,getByteString(chr(13)))