Just nu i M3-nätverket
Jump to content

Låsa vissa bildtyper


MaZoR

Recommended Posts

Hej!

 

Jag har ett uploadscript som tar emot alla typer av bilder. Jag har nu märkt att en del laddar upp filer som .bmp mfl som kräver oerhört stor bandbredd om man har ett forum som visar allas bilder. Att då sitta med exempelvis modem och ladda 100 2,5 megabytes bilder är väldigt segt.

 

Jag skulle nu vilja göra en funktion som kollar vilket format det är på filen som laddas upp, och sedan bara tillåta .jpg eller .gif.

 

Kan någon hjälpa mig?

Kan ge mer information om mitt system om så krävs.

 

Sen har jag förövrigt en fråga om 404.

Jag har hittat hur jag ändrar 404 filen i min IIS, men hur får jag dom inställningarna jag har på IIS:en att fungera på webbsidan?

 

Tacksam för svar.

/Jonathan

Link to comment
Share on other sites

Till svar på din 404 fel fråga så fins en utmärkt artikel som förklarar allt här.

http://www.idg.se/webstudio/pub/object.asp?id=18

 

På frågan om uploade är jag lite lost. jag kan inte så mycket... jag gjorde så att jag bara begränsade storleken på filerna som går att uploada. jag använder ASPuploade.. tyvärr kommer jag inte ihåg var jag hittade det. men det är ganska omtyckt, säkert hittar du det om du söker här i eforum

 

Link to comment
Share on other sites

Christopher Bergren

Vilken komponent sitter du med? De flesta har properties för att få ut hela filnamnet, så det är ju bara att plocka ut suffixet från filnamnet så vet du vilken typ av fil det är.

/Chris

 

Link to comment
Share on other sites

Jag vet ej exakt vilken komponent, vad den heter eller var jag fick den ifrån.

Men det här är iallafall innehållet i Loader.asp, som antagligen får ut suffixet någonstans. Men det vet jag inte var ;)

 

Class Loader
	Private dict

	Private Sub Class_Initialize
		Set dict = Server.CreateObject("Scripting.Dictionary")
	End Sub

	Private Sub Class_Terminate
		If IsObject(intDict) Then
			intDict.RemoveAll
			Set intDict = Nothing
		End If
		If IsObject(dict) Then
			dict.RemoveAll
			Set dict = Nothing
		End If
	End Sub

	Public Property Get Count
		Count = dict.Count
	End Property

	Public Sub Initialize
		If Request.TotalBytes > 0 Then
			Dim binData
				binData = Request.BinaryRead(Request.TotalBytes)
				getData binData
		End If
	End Sub

	Public Function getFileData(name)
		If dict.Exists(name) Then
			getFileData = dict(name).Item("Value")
			Else
			getFileData = ""
		End If
	End Function

	Public Function getValue(name)
		Dim gv
		If dict.Exists(name) Then
			gv = CStr(dict(name).Item("Value"))

			gv = Left(gv,Len(gv)-2)
			getValue = gv
		Else
			getValue = ""
		End If
	End Function

	Public Function saveToFile(name, path)
		If dict.Exists(name) Then
			Dim temp
				temp = dict(name).Item("Value")
			Dim fso
				Set fso = Server.CreateObject("Scripting.FileSystemObject")
			Dim file
				Set file = fso.CreateTextFile(path)
					For tPoint = 1 to LenB(temp)
					    file.Write Chr(AscB(MidB(temp,tPoint,1)))
					Next
					file.Close
				saveToFile = True
		Else
				saveToFile = False
		End If
	End Function

	Public Function getFileName(name)
		If dict.Exists(name) Then
			Dim temp, tempPos
				temp = dict(name).Item("FileName")
				tempPos = 1 + InStrRev(temp, "\")
				getFileName = Mid(temp, tempPos)
		Else
			getFileName = ""
		End If
	End Function

	Public Function getFilePath(name)
		If dict.Exists(name) Then
			Dim temp, tempPos
				temp = dict(name).Item("FileName")
				tempPos = InStrRev(temp, "\")
				getFilePath = Mid(temp, 1, tempPos)
		Else
			getFilePath = ""
		End If
	End Function

	Public Function getFilePathComplete(name)
		If dict.Exists(name) Then
			getFilePathComplete = dict(name).Item("FileName")
		Else
			getFilePathComplete = ""
		End If
	End Function

	Public Function getFileSize(name)
		If dict.Exists(name) Then
			getFileSize = LenB(dict(name).Item("Value"))
		Else
			getFileSize = 0
		End If
	End Function

	Public Function getFileSizeTranslated(name)
		If dict.Exists(name) Then
			temp = 1 + LenB(dict(name).Item("Value"))
				If Len(temp) <= 3 Then
					getFileSizeTranslated = temp & " bytes"
				ElseIf Len(temp) > 6 Then
					temp = FormatNumber(((temp / 1024) / 1024), 2)
					getFileSizeTranslated = temp & " megabytes"	
				Else
					temp = FormatNumber((temp / 1024), 2)
					getFileSizeTranslated = temp & " kilobytes"
				End If
		Else
			getFileSizeTranslated = ""
		End If
	End Function

	Public Function getContentType(name)
		If dict.Exists(name) Then
			getContentType = dict(name).Item("ContentType")
		Else
			getContentType = ""
		End If
	End Function

Private Sub getData(rawData)
	Dim separator 
		separator = MidB(rawData, 1, InstrB(1, rawData, ChrB(13)) - 1)

	Dim lenSeparator
		lenSeparator = LenB(separator)

	Dim currentPos
		currentPos = 1
	Dim inStrByte
		inStrByte = 1
	Dim value, mValue
	Dim tempValue
		tempValue = ""

	While inStrByte > 0
		inStrByte = InStrB(currentPos, rawData, separator)
		mValue = inStrByte - currentPos

		If mValue > 1 Then
			value = MidB(rawData, currentPos, mValue)

			Dim begPos, endPos, midValue, nValue
			Dim intDict
				Set intDict = Server.CreateObject("Scripting.Dictionary")

				begPos = 1 + InStrB(1, value, ChrB(34))
				endPos = InStrB(begPos + 1, value, ChrB(34))
				nValue = endPos

			Dim nameN
				nameN = MidB(value, begPos, endPos - begPos)

			Dim nameValue, isValid
				isValid = True

				If InStrB(1, value, stringToByte("Content-Type")) > 1 Then

					begPos = 1 + InStrB(endPos + 1, value, ChrB(34))
					endPos = InStrB(begPos + 1, value, ChrB(34))

					If endPos = 0 Then
						endPos = begPos + 1
						isValid = False
					End If

					midValue = MidB(value, begPos, endPos - begPos)
						intDict.Add "FileName", trim(byteToString(midValue))

					begPos = 14 + InStrB(endPos + 1, value, stringToByte("Content-Type:"))
					endPos = InStrB(begPos, value, ChrB(13))

					midValue = MidB(value, begPos, endPos - begPos)
						intDict.Add "ContentType", trim(byteToString(midValue))

					begPos = endPos + 4
					endPos = LenB(value)

					nameValue = MidB(value, begPos, endPos - begPos)
				Else
					nameValue = trim(byteToString(MidB(value, nValue + 5)))
				End If

				If isValid = true Then
					intDict.Add "Value", nameValue
					intDict.Add "Name", nameN

					dict.Add byteToString(nameN), intDict
				End If
		End If

		currentPos = lenSeparator + inStrByte
	Wend
End Sub

End Class

Private Function stringToByte(toConv)
	Dim tempChar
	 For i = 1 to Len(toConv)
	 	tempChar = Mid(toConv, i, 1)
		stringToByte = stringToByte & chrB(AscB(tempChar))
	 Next
End Function

Private Function byteToString(toConv)
	For i = 1 to LenB(toConv)
		byteToString = byteToString & chr(AscB(MidB(toConv,i,1))) 
	Next
End Function

 

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.



×
×
  • Create New...