Fast nu så går det inte o uploada alls pga. att If satsen utförs även om det inte finns en fil i katalogen..
Uploadscript utan komponent
307 svar · 16 553 visningar · startad av OveRRidE · sida 11 av 16
solbulle >> Det var skitsamma med det felet...
Jaha, haha, nejdå. Tyckte inte att det var någon riktig hjälp när jag själv inte riktigt förstod vad jag ville ha hjälp med... lr nåt :)
Melea: Anledningen till att dety inte fungerar är väl att du gör kollen efter att du laddat upp filen...
Du lär väl till att behöva sätta den där kollen innan du laddar upp den nya filen.
Flytta upp kollen med FSO till precis under denna rad:
Set ScriptObject = Server.CreateObject("Scripting.FileSystemObject")
k0ffe: Hmm.
<!-- #include file="../../data.inc" -->
<%
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
username = UploadRequest.Item("username").Item("Value")
info = UploadRequest.Item("info").Item("Value")
player1 = UploadRequest.Item("player1").Item("Value")
player2 = UploadRequest.Item("player2").Item("Value")
player1race = UploadRequest.Item("player1race").Item("Value")
player2race = UploadRequest.Item("player2race").Item("Value")
map = UploadRequest.Item("map").Item("Value")
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
Set ScriptObject = Server.CreateObject("Scripting.FileSystemObject")
If ScriptObject.FileExists(server.mappath(("/Creative/warcraft/replays/" & filename)) then
Session("fel") = "Det finns redan en replay med det namnet"
Response.Redirect "../admin.asp?login=yes&add=replay"
Else
'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/warcraft/replays/" & filename))
For i = 1 to LenB(value)
MyFile.Write chr(AscB(MidB(value,i,1)))
Next
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 wc3_replay (filename, username, info, player1, player2, player1race, player2race, map, datum) values ('" & filename & "', '" & username & "', '" & info & "','" & player1 & "','" & player2 & "', '" & player1race & "','" & player2race & "','" & map & "','" & datum & "')"
Connect.Execute(sql),,128
Connect.Close : Set objConnect = Nothing
MyFile.Close
End If
Response.Redirect "../admin.asp?login=yes&add=replay"
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
%>
Det var där jag la koden men det funkar fortfarande inte...
Ok... jag tyckte inte det såg ut som det, jag trodde du hade gjort som du visade här: http://www.webforum.nu/showthread.php?s=&postid=683135#post683135
Hm, jag flyttade om koden lite själv efteråt.. men de funkade inte :OO
Jahapp, tar upp en gammal tråd :-)
Skulle vilja ha så man kan uploada GIF filer också.. just nu har jag den här koden:
If NOT contentType="image/pjpeg" THEN
Session("fel") = "Det måste vara JPG!"
Response.Redirect "../admin.asp?login=yes&show=picture&editID=" & editID & " "
End If
Vore också bra om man kunde byta namn på filen automatiskt när man uploadar den till sitt ID
Har fått svar på de här 2 senaste frågorna, nevermind :P
Flera bilder!
Jag har ett litet problem, om man vill ladda upp flera bilder med hjälp av detta skript, hur ska man då gå tillväga? Har prövat lite olika saker men utan att lyckas...
Den som är inloggad ska kunna skapa ett nytt "galleri", först skriva en rubrik för galleriet, som sedan ska länka till bilderna som skribenten efter att ha skrivit rubriken skall kunna ladda upp.
Hoppas nån förstod vad jag menar.
Ja, jo, men hur får man in resten? Det är ju samma script, bara att du inte är tvungen att ladda upp en bild för att gå vidare?
Utförligare förklaring uppskattas...
*host*
Glöm det jag skrev...
Jag förstår inte frågan.
Hur gör jag nu för att få in bildernas namn i databasen? Eftersom alla heter "Filename" blev jag lite förvirrad...
Exempel:
Set Connection = Server.CreateObject("ADODB.Connection")
Connection.Open "Provider=Microsoft.Jet.OLEDB.4.0; "&_
"Data Source="&Server.MapPath("ncjcj")
SQLStmt = "INSERT INTO bildarkiv (nyh_bild1, nyh_bild2, rubrik, forfattare) "
SQLStmt = SQLStmt & "VALUES('" & filename & "', '" & filename & "', '" & rubrik & "', '" & Session("Namn") & "') "
Set RS = Connection.Execute(SQLStmt)
Är det andra fält än just filen så har ju de fälten andra namn...
Annars om du kör varianten med en loop så kanske du kan lägga filnamnet i olika variabelnamn för varje varv loopen gör... Lite luddigt kanske..
Ok, men jag gjorde på ett annat sätt.
Jag skapade en ny tabell för bara bilderna, så dom får läggas till med separat ID i en egen tabell.
Problemet är ju bara det, att när jag nu har rubrik, forfattare etc i en tabell, och själva bilderna i en annan, så följer ju inte bilderna med som dom ska med querystring.
T.ex
Rubrik 1 - 7 bilder (2 bilder)
Rubrik 2 - 5 bilder (3 bilder)
Rubrik 3 - 2 bilder
Är du med solis?
Det är helt klart för varmt för mig idag...
Men om det är som så att du har flera bilder till en artikel/rubrik så tycker jag att en relationstabell är en bra lösning.
tblartikelbild
id - bildid - rubrikid
Ok, det har jag försökt med, utan att lyckas :(
Den ena tabellen heter bildarkiv.
forfattare rubrik arkiv datum
Och den andra heter visa_bild.
bild ID datum
Jag vet inte hur jag ska få till det...