Jag har ett gratisskript från joakimweb.se men det är utan validering (att jag klickar om den bilden får visas eller inte). Därför undrar jag om ni har något skript som man kan få använda?
Jag kan egentligen ingenting om ASP det är därför jag söker professionell hjälp.
Här kommer skripten.
laddaupp.asp
<!--#include file="koppling.asp" -->
<%
' Uppladdningskoden
If Request("do") = "laddaupp" Then
' Startar en funktion som finns längre ner i koden
Dim fil
Set fil = get_upload_files()
' Koden som laddar upp filen med hjälp av funktionen
Dim plac, filen, innehall
innehall = fil("upload").Item("content")
Set filen = filer.CreateTextFile(mapp2 & "\" & extract_filename(fil("upload").Item("filename")))
For plac = 1 to LenB(innehall)
filen.Write chr(AscB(MidB(innehall, plac, 1)))
Next
filen.Close
Set filen = Nothing
Response.Redirect Request.ServerVariables("HTTP_REFERER")
END IF
%>
<%
' funktionen som används för uppladdning av filer
Function get_upload_files()
Dim upload_object, request_binaries
Dim position_start, position_end
Dim boundary, boundary_pos
Set upload_object = Server.CreateObject("Scripting.Dictionary")
request_binaries = Request.BinaryRead(Request.TotalBytes)
position_start = 1
position_end = InstrB(position_start, request_binaries, get_byte_string(chr(13)))
boundary = MidB(request_binaries, position_start, (position_end - position_start))
boundary_pos = InstrB(1, request_binaries, boundary)
Do Until (boundary_pos = InstrB(request_binaries, boundary & get_byte_string("--")))
' Om du stäng ner webbläsaren, då avslutas uppladdningen
If Not(Response.IsClientConnected) Then Response.End
Dim name, pos_file
position_start = (InstrB(InstrB(boundary_pos, request_binaries, get_byte_string("Content-Disposition")), request_binaries, get_byte_string("name=")) + 6)
position_end = InstrB(position_start, request_binaries, get_byte_string(chr(34)))
name = get_string(MidB(request_binaries, position_start, (position_end - position_start)))
pos_file = InstrB(boundary_pos, request_binaries, get_byte_string("filename="))
If ((pos_file <> 0) AND (pos_file < InstrB(position_end, request_binaries, boundary))) Then
upload_object.Add name, Server.CreateObject("Scripting.Dictionary")
position_start = (pos_file + 10)
position_end = InstrB(position_start, request_binaries, get_byte_string(chr(34)))
upload_object.item(name).Add "filename", get_string(MidB(request_binaries, position_start, (position_end - position_start)))
position_start = (InstrB(position_end, request_binaries, get_byte_string("Content-Type:")) + 14)
position_end = InstrB(position_start, request_binaries, get_byte_string(chr(13)))
upload_object.item(name).Add "content-type", get_string(MidB(request_binaries, position_start, (position_end - position_start)))
position_start = (position_end + 4)
position_end = InstrB(position_start, request_binaries, boundary) - 2
upload_object.item(name).Add "size", ((position_end - position_start))
upload_object.item(name).Add "content", MidB(request_binaries, position_start, (position_end - position_start))
End If
boundary_pos = InstrB(boundary_pos + LenB(boundary), request_binaries, boundary)
Loop
Set get_upload_files = upload_object
End Function
Function get_byte_string(str)
Dim cnt
For cnt = 1 to Len(str)
get_byte_string = get_byte_string & chrB(AscB(Mid(str, cnt, 1)))
Next
End Function
Function get_string(str)
Dim cnt
For cnt = 1 to LenB(str)
get_string = get_string & chr(AscB(MidB(str, cnt, 1)))
Next
End Function
Function extract_filename(filename)
extract_filename = Right(filename, Len(filename) - InStrRev(filename, "\", -1, 1))
End Function
%>
koppling.asp
<%
' Välj mapp där filerna skall hamna
Dim mapp1, mapp2
mapp1 = "bilder"
mapp2 = Server.MapPath(mapp1)
' Skapar ett FileSystemObject
Dim filer, mapp
Set filer = Server.CreateObject("Scripting.FileSystemObject")
' Kollar om mappen existerar, gör den inte det så skapas den
If Not filer.FolderExists(mapp2) Then
filer.CreateFolder(mapp2)
End If
Set mapp = filer.getFolder(mapp2)
%>
Med validering menar du att du vill kontrollera filen innan den visas för allmänheten?
Jag ser ingen kontroll för vad som laddas upp. Om någon som har lösenordet vill vara lite elak så kan denne ladda upp virus eller vad fasen som hellst...
Enklaste sättet att kontrollera bilderna är att ladda upp dem till en icke publik mapp utanför roten eller till en lösenordskyddad mapp. Sen kollar du filen och flyttar dem du vill till den publika mappen. Det kan du göra manuellt med FTP.
Jag har provat med att göra som du sa med att flytta filerna manuellt men eftersom den var tidigare upp så har jag vetskapen att det var många bilder som laddades upp och det blev mycket arbete för mig.
Om du har programkoden så skulle det vara riktigt snällt att ladda upp den. Jag har även ändrat CHMOD till ingen access för någon så att ingen ska kunna se bilderna.
Edit: Skulle man även kunna göra så att den nya mappen som skapas blir den som laddar upp's IP. Alltså, om jag laddar upp och har IPn 999.999.999 så ska mappen som skapas kallas 999.999.999.
Så att i koppling.asp så blir det
<%
' Välj mapp där filerna skall hamna
Dim mapp1, mapp2
mapp1 = "<response.write("IP")>" <!-- Om man kan göra så -->
mapp2 = Server.MapPath(mapp1)
<%
' Välj mapp där filerna skall hamna
Dim mapp1, mapp2
mapp1 = "bilder/" & request.servervariables("REMOTE_ADDR")
mapp2 = Server.MapPath(mapp1)
Nått sånt hade jag hellre gjort då mapparna annars skapas i samma mapp som scriptet...
Du kan göra ett script som visar alla nya mappar/filer och dess innehåll med FileSystemObject.
Du kan skapa en funktion som antingen godkänner och flyttar filen till den vanliga mappen med bilder eller ta bort bilden. Allt detta borde kunna göras med FileSystemObject.
Jag hinner dock inte med ett exempel nu då jag måste plugga vidare. Tre stora test denna veckan :( Jag vet dock att OveRRidE är ytterst kompetent och om han känner för det kommer nog svar tidigare :P