webForumDet fria alternativet

[ASP] Lägga till bildvalidering - hur?

ASP

5 svar · 569 visningar · startad av wally_91

Medlem sedan feb. 2006511 inlägg
Frågan#1

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)
%>

default.asp

<!--#include file="koppling.asp" -->

<% IF Request("do") = "loggain" then
losenord = "losenord"
IF Request("losenord") <> losenord then
Session("felmess") = "Fel lösenord"
Response.Redirect Request.ServerVariables("SCRIPT_NAME")
ELSE
Session("laddaupp") = "ok"
Response.Redirect Request.ServerVariables("SCRIPT_NAME")
END IF
END IF
%>
 <html><head>
<link href=style.css rel=stylesheet type=text/css>
<title>9ornas årsbok - föreviga dina minnen och ladda upp bilder! - www.asboken9.somee.com</title>
<script type="text/javascript" language="JavaScript">
<!--
	function hjalp() {
		window.open("hjalp.asp","namn","width=1050,height=650,scrollbars=yes,status=yes,toolbar=no,resizable=yes,location=no,menubar=no,directories=no")
	}
//-->
</script>
	
</head>
<body onLoad="show_clock()">
<div style="position: absolute; width: 100px; height: 100px; z-index: 2; left: 1005px; top: 240px; visibility: visible" id="lager2">
	<img border="0" src="nyhet-orange.gif" width="127" height="123"></div>
<p align="center">
<img src="banner-long.gif" border="0" alt="www.arsboken9.somee.com - föreviga dina minnen och fotografier"></p>

<!--KLOCKA-->
<p align="left"><font face="Verdana" size="1">
<script language="javascript" src="liveclock.js">

/*
Live Clock Script-
By Mark Plachetta (astro@bigpond.net.au©) based on code from DynamicDrive.com
For full source code, 100's more DHTML scripts, and Terms Of Use,
visit http://www.dynamicdrive.com
*/

</script>
<!--KLOCKA SLUT-->

<% IF Session("laddaupp") = "ok" then %>
<table width='285'>
  <tr>
<td colspan=2><font face=verdana size=2>
      <div align=center>BILDUPPLADDNING</div>
      </font></td>
</tr>
<tr>
<td colspan=2><hr size=1 color=#000000></td>
</tr>
<tr>
<td width=60%><font face=verdana size=1><b>Filnamn</b></font></td>
<td width=40%><font face=verdana size=1><b>Filstorlek</b></font></td>
</tr>
<%
' Här hämtas alla filerna
For Each filen In mapp.Files
%>
<tr>
<td width='60%'><font face=verdana size=1><a href="<%Response.Write mapp1 & "/" & filen.Name %>">
<%Response.Write filen.name%></a></font></td>
<td width='40%'><font face='verdana' size='1'> <%Response.Write Round(filen.Size/1024,2)%> Kb
</font></td>
</tr>
<%Next%>
<tr>
<td colspan='2'><hr size='1' color='#000000'></td>
</tr>
<tr>
<td align='left' colspan='2'>

<form name="frmUpload" method="post" enctype="multipart/form-data" action="laddaupp.asp?do=laddaupp">
<input type='file' name='upload' style='Border: 1px solid; font-family: verdana; font-size: 10px'>&nbsp;<input type='submit' value='Ladda upp' style='border: #000000 1px solid; font-family: verdana; font-size: 10px'>
</form>
</td>
</tr>

</table>
<%ELSE%>
<form name="form1" method="post" action="default.asp?do=loggain">
  <table width="285">
    <tr> 
      <td colspan="2"> 
        <div align="center"><font size="2" face="Verdana">BILDUPPLADDNING</font></div>
      </td>
    </tr>
    <tr> 
      <td colspan="2"> 
        <hr size=1 color=#000000>
      </td>
    </tr>
    <tr> 
      <td> 
        <div align="left"><font face="Verdana" size="1"><b>Ange l&ouml;senordet: 
          </b> </font></div>
      </td>
      <td> 
        <input type="password" name="losenord" style='border: #000000 1px solid; font-family: verdana; font-size: 10px'>
      </td>
    </tr>
    <tr> 
      <td colspan="2"> 
        <input type='submit' value='Logga in' style='border: #000000 1px solid; font-family: verdana; font-size: 10px'>
      </td>
    </tr>
    <tr>
      <td colspan="2"><font face="Verdana" size="1"><%IF Len(Session("felmess")) <> 0 then
	  Response.Write Session("felmess")
	  Session("felmess") = ""
	  END IF%>
	  </font></td>
    </tr>
  </table>
</form>
<%END IF%>
<a href="#" onClick="hjalp();return false;" alt="Hjälp!"><img src="help-mininized2.gif" border="0" alt="Hjälp!"></a>

<!-- Start JW GÄSTBOK kod -->
<iframe src="http://www.joakimweb.se/tjanster/index.asp?gbid=18162" align="right" name="jwgb" frameborder="0" marginwidth="1" marginheight="1" width="800" height="600" scrolling="auto"></iframe>

<p><a href="#" onClick="hjalp();return false;" alt="Se på film!"><img src="sepafilm.gif" border="0" alt="Se på film!"></a>
</p>

<div style="position: absolute; width: 100px; height: 100px; z-index: 1; left: 25px; top: x; top: 500px" id="lager1">
<img src="graduation2-reg.png">&nbsp;</div>

<div style="position: absolute; width: 420px; height: 100px; z-index: 1; left: 50px; top: 875px" id="lager1">
<img src="banner.gif" border="0" alt="www.arsboken9.somee.com - föreviga dina minnen och fotografier"
<p><p>&nbsp;</p>
<p>&nbsp;</p>
<p><img src="fxieop.jpg" alt="Denna sida är kompitabel med Firefox, Internet Explorer och Opera" border="0"></p></p>
<br><br></div>
<p>&nbsp;</p>

</body>
</html>

Tack för alla svar!

//wally_91

Medlem sedan juli 20041 183 inlägg
#2

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.

Annars krävs det lite programmering...

Medlem sedan feb. 2006511 inlägg
#3

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)
Medlem sedan feb. 200112 078 inlägg
#4

Nja, du blandar ASP och HTML friskt där. ;) Det blir nog snarare så här;

<%
' Välj mapp där filerna skall hamna
Dim mapp1, mapp2
mapp1 = request.servervariables("REMOTE_ADDR")
mapp2 = Server.MapPath(mapp1)
Medlem sedan juli 20041 183 inlägg
#5
<%
' 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

Medlem sedan feb. 2006511 inlägg
#6

Okej, men har någon annan en kod som lilja beskriver i det föregående inlägget?

284 ms totalt · 4 externa anrop · v20260731065814-full.86ec41c2
129 ms — deklarationer (db)
0 ms — hämta statistik (cache)
151 ms — hämta tråd, inlägg och bilagor (db)
129 ms — ändringar (db)