Det går inte att visa XML-sidan
Det går inte att visa XML-indata med formatmallen XSL.
Korrigera felet och klicka sedan på knappen Uppdatera eller försök igen senare.
--------------------------------------------------------------------------------
Sluttaggen head matchar inte starttaggen link.
Det gick inte att behandla resursen
[url]http://localhost/creative/counter-strike/admin.asp?login=yes&show=files&editID=1.[/url]
Rad 13, Position 3
</head>
--^
Aldrig sett ngt liknande innan, vad kan felet vara?
*Redigerat Om jag klickar på länken utan att ha räknaren i dokumentet funkar det och sen när jag klistrar in räknaren och sedan uppdaterar funkar det också, men det strular när jag trycker på länken till dokumentet, när jag har koden i dokumentet...
Jesper T: joa, du fick mig på rätt väg, ska se vad jag kan göra åt det nu, tack! :)
3.
En fråga till... hur gör jag If satsen? jag har försökt med
If ScriptObject.GetFile(Server.MapPath(MyFile)).size > "2000" then
Session("fel") = "Du har bara 2 mb att använda till filer"
Response.Redirect "../admin.asp?login=yes&show=files&editID=" & editID & " "
End If
PS.
Nu när jag kikar närmare på just den funktionen ser jag att just Myfile är ett väldigt dumt variabelnamn där, eftersom du använder det till annat i ditt skript.
( Function getFileSize(MyFile) )
Det andra felet du undrar över verkar vara någon sorts xml-fel som jag inte har den blekaste aning om vad det kan vara.
Den kod som asp-skriptet genererar, ser den ok ut?
Du skriver:
Om jag klickar på länken utan att ha räknaren i dokumentet funkar det och sen när jag klistrar in räknaren och sedan uppdaterar funkar det också, men det strular när jag trycker på länken till dokumentet, när jag har koden i dokumentet...
Det tolkar jag som om att det finns mer kod i den sidan, är det inte där du får något fel då?
Använder du sessions eller querystrings som du plockar ner på den sidan?
<%
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
Set UploadRequest = CreateObject("Scripting.Dictionary")
BuildUploadRequest RequestBin
editID = UploadRequest.Item("editID").Item("Value")
username = UploadRequest.Item("username").Item("Value")
datum = Now()
contentType = UploadRequest.Item("filename").Item("ContentType")
filepathname = UploadRequest.Item("filename").Item("FileName")
filename = Right(filepathname,Len(filepathname)-InstrRev(filepathname,"\"))
value = UploadRequest.Item("filename").Item("Value")
'Create FileSytemObject Component
If Session("access") = "2" then
If byteCount=>500000 THEN
Session("fel") = "Den måste vara mindre än 500kb!"
Response.Redirect "../admin.asp?login=yes&show=files&editID=" & editID & " "
End If
End If
dim filesys, newfolder, newfolderpath
newfolderpath = Server.MapPath("../../files/") & "\" & Session("username")
set filesys=CreateObject("Scripting.FileSystemObject")
If Not filesys.FolderExists(newfolderpath) Then
Set newfolder = filesys.CreateFolder(newfolderpath)
End If
Set ScriptObject = Server.CreateObject("Scripting.FileSystemObject")
'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)&filename)
Set MyFile = ScriptObject.CreateTextFile(Server.mappath("/Creative/files/" & Session("username") & "/" & filename))
If ScriptObject.GetFile(Server.MapPath(MyFile)).size > "2000" then
Session("fel") = "Du har bara 2 mb att använda till filer"
Response.Redirect "../admin.asp?login=yes&show=files&editID=" & editID & " "
End If
For i = 1 to LenB(value)
MyFile.Write chr(AscB(MidB(value,i,1)))
Next
Function getFileSize(MyFile)
Set fil = ScriptObject.GetFile(Server.MapPath(MyFile))
storlek = fil.size
getFileSize = round((storlek / 1024),2)
Set fil = Nothing
End Function
storlek = getFileSize("/Creative/files/" & Session("username") & "/" & filename)
Set Connect = Server.CreateObject("ADODB.Connection")
Connect.Open "Driver={MySQL ODBC 3.51 Driver};server="&strserver&";uid="&struser&";pwd="&strpass&";database="&strdb&""
sql = "insert into files (filename, username, datum, storlek) values ('" & filename & "', '" & username & "','" & datum & "','" & storlek & "')"
Connect.Execute(sql),,128
Connect.Close : Set objConnect = Nothing
MyFile.Close
Ska det spela någon roll om man använder variablen MyFile i två olika "script" i koden?
Sen angående det andra så funkar koden utmärkt utan själva räknaren. Just den här delen (ifsatsen) av dokumentet öppnas upp med querystring medans en del (ifsats) längre ner i dokumentet öppnas upp med where username = '" & lcase(Session("username")) & "'
Som sagt, koden funkar utmärkt när jag inte använder
<%
Set fso = CreateObject("Scripting.FileSystemObject")
Set folder = fso.GetFolder("C:\Inetpub\wwwroot\Creative\files\")
count = 1
Response.ContentType = "text/xml"
Response.Write "<?xml version=""1.0""?>" & Vbcrlf
Response.Write "<system>" & Vbcrlf
Call Skriv(folder.Name, folder.Size)
Response.Write "</system>" & Vbcrlf
Sub Skriv(namn, size)
Response.Write "<webbplats id=""" & count & """>" & Vbcrlf & "<katalog>" & namn & "</katalog>" _
& Vbcrlf & "<sizemb>" & CInt(size / 1024) & "</sizemb>" & Vbcrlf & "</webbplats>" & Vbcrlf
End Sub
Set folder = Nothing
Set fso = Nothing
%>
Den funkar också när jag bara klistrar in koden direkt när jag redan är på sidan! Och sedan uppdaterar... Det är när jag trycker på länken till sidan som jag får XML felet...
Du kan inte begärnsa användares möjlighet att lägga upp Max 2 MB så som du tänkt dig.
Du kanske kan (beroende på hur man laddar upp filerna) göra så att man inte kan ladda upp fler filer om du har mer än 2 MB i mappen.
Men om mappen är tom och jag får ladda upp, så kan jag ju ladda upp en fil som är på 100 MB och när du sedan kollar hur stor mappen är, så är den större än 2 MB så jag får inte ladda upp mer, men innehållet är större än 2 MB.
För att begränsa så att man endast kan ha 2 MB MAX måste du använda något Quota system, Win2000/Win2003 har detta inbyggt så man kan sätta det så att en viss användare endast får ha 2 MB filer på servern (eller om det var per folder).
Han kan visst begränsa ungefär så som han har tänkt sig.
Han kan antingen kolla hur mycket utrymme allt tar efter uppladdningen och radera den nyss uppladdade filen, eller smartare, kolla först hur mycket som är lagrat och kolla om det plus storleken på den fil som just laddas upp håller sig under 2mb.
Han har ju även en spärr som gör att man ej kan ladda upp filer större än 500kb.
Angående variabeln Myfile, visst går det väl att använda samma namn, men det är ju som upplagt för förväxlingar.
I ditt fall har det blivit lite tokigt när du försöker kolla totala mappstorleken, det är inte objektet MyFile du ska använda dig av. Du ska använda sökvägen till den mapp som ska storlekskollas.
Testa detta:
If ScriptObject.GetFile(Server.MapPath(newfolderpath)).size > 2000 then
Session("fel") = "Du har bara 2 mb att använda till filer"
Response.Redirect "../admin.asp?login=yes&show=files&editID=" & editID
End If
Aj, man lever inte som man lär direkt...
Så här skulle det ju vara... tror jag...
If ScriptObject.GetFile(newfolderpath).size > 2000 then
Session("fel") = "Du har bara 2 mb att använda till filer"
Response.Redirect "../admin.asp?login=yes&show=files&editID=" & editID
End If
"Vi" har ju redan gjort server.mappath och fått fram sökvägen i just variabeln newfolderpath, det var därför jag tänkte att vi skulle utnyttja den igen.
Men då behöver vi ju givetvis inte, som Jesper T påpekar, använda oss av server.mappath igen.
Jag bytte ut lite saker i koden.
"Vi" hade inte gjort så 2000 var / 1024 så jag multiplicerade 2000 med 1024 och fick ut 2048000, så jag bytte ut 2000 mot det talet.
Nu ser koden ut såhär:
If ScriptObject.GetFile(Server.MapPath("../../files/") & "\" & Session("username")).size > "2048000" then
Session("fel") = "Du har bara 2 mb att använda till filer"
Response.Redirect "../admin.asp?login=yes&show=files&editID=" & editID
End If
Men nu får jag felmeddelandet:
Feltyp:
Körningsfel i Microsoft VBScript (0x800A0035)
Det går inte att hitta filen.
Kolla först hur stor mappen är innan du låter dem göra en uppladdning, eftersom du kan läsa ut hur stor deras mapp är, så kolla först storleken på den fil som laddas upp.
Och om den aktuella mappens storlek plus den nya filens storlek överstiger 1024*2000 bytes så radera filen, eller stoppa uppladdningen.
Har du några tips eller ideér på hur jag ska kolla hur stor mappen är? Är ganska kass på asp än sålänge men jag lär mig :)
Solbulle: jag bytte ut koden mot:
If Server.MapPath("../../files/") & "\" & Session("username").size > "2048000" then
Session("fel") = "Du har bara 2 mb att använda till filer"
Response.Redirect "../admin.asp?login=yes&show=files&editID=" & editID
End If
eftersom det inte är ngn fil "vi" anropar men då står det:
Feltyp:
Körningsfel i Microsoft VBScript (0x800A01A8)
Objekt krävs.: 'Session(...)'
'först lite formulärhämtning o grejer..
Set MyFile = ScriptObject.CreateTextFile(newfolderpath & "/" & filename)
mappstorlek = getFolderSize(newfolderpath)
For i = 1 to LenB(value)
MyFile.Write chr(AscB(MidB(value,i,1)))
Next
MyFile.Close
storlek = getFileSize(newfolderpath & "\" & filename)
If mappstorlek + storlek > 2000 then
Session("fel") = "Du har bara 2 mb att använda till filer, du har nu " & mappstorlek & "kb uppladdat."
'Response.Redirect "../admin.asp?login=yes&show=files&editID=" & editID
response.write "Du har bara 2 mb att använda till filer, du har nu " & mappstorlek & "kb uppladdat."
deleteFile(newfolderpath & "\" & filename)
End If
Set Connect = Server.CreateObject("ADODB.Connection")
Connect.Open "Driver={MySQL ODBC 3.51 Driver};server="&strserver&";uid="&struser&";pwd="&strpass&";database="&strdb&""
sql = "insert into files (filename, username, datum, storlek) values ('" & filename & "', '" & username & "','" & datum & "','" & storlek & "')"
Connect.Execute(sql),,128
Connect.Close : Set objConnect = Nothing
Function getFolderSize(strfolder)
Set folder = ScriptObject.GetFolder(strfolder)
storlek = folder.size
getFolderSize = round((storlek / 1024),2)
Set folder = Nothing
End Function
Function getFileSize(strfilen)
Set fil = ScriptObject.GetFile(strfilen)
storlek = fil.size
getFileSize = round((storlek / 1024),2)
Set fil = Nothing
End Function
Function deleteFile(strfilen)
Set fileObject = ScriptObject.GetFile(strfilen)
fileObject.Delete
Set fileObject = Nothing
End Function
'resterande subbar med själva uppladdningsprylarna.
Hupp, det tänkte jag inte på, lägg till inläggandet i if-satsen så.
If mappstorlek + storlek > 2000 then
Session("fel") = "Du har bara 2 mb att använda till filer, du har nu " & mappstorlek & "kb uppladdat."
'Response.Redirect "../admin.asp?login=yes&show=files&editID=" & editID
response.write "Du har bara 2 mb att använda till filer, du har nu " & mappstorlek & "kb uppladdat."
deleteFile(newfolderpath & "\" & filename)
Else
Set Connect = Server.CreateObject("ADODB.Connection")
Connect.Open "Driver={MySQL ODBC 3.51 Driver};server="&strserver&";uid="&struser&";pwd="&strpass&";database="&strdb&""
sql = "insert into files (filename, username, datum, storlek) values ('" & filename & "', '" & username & "','" & datum & "','" & storlek & "')"
Connect.Execute(sql),,128
Connect.Close : Set objConnect = Nothing
End If
270 ms totalt · 4 externa anrop · v20260731065814-full.e96017d9