Okaj, här kommer det jag använder:
Kod för att visa bilden:
\<%
Dim Bild
Set fs = Server.CreateObject("Scripting.FileSystemObject")
If fs.FileExists(Server.MapPath("\\klass\\pic\\users\\") & "\\" & Session("userID") & ".jpg") = True Then
Bild = "/klass/pic/users/" & Session("userID") & ".jpg"
Else
Bild = "\\klass\\pic\\user_default.gif"
End If
%\>
\<IMG SRC="\<%=Bild%\>" HEIGHT="277" WIDTH="199" STYLE="border: 2px solid #8890A8; margin: 10px;"\>
Kod för att välja fil som ska laddas upp:
<FORM METHOD="post" ENCTYPE="multipart/form-data" ACTION="uploadaction.asp" STYLE="position: absolute; top: 1075px; left: 332px; z-index: 11;">
\<P\>
\<SPAN CLASS="blur"\>Bildens Plats:\</SPAN\>\<BR\>
\<INPUT TYPE="file" SIZE="20" NAME="FILE1" CLASS="input"\>
\<P\>
\<input type="submit" value="Uploada" CLASS="input" STYLE="font-weight: 900;"\>\<BR\>
\</FORM\>
uploadaction.asp
<%@ Language=VBScript %>
<!-- #include file="upload.asp" -->
<%
' On Error Resume Next
' Create the FileUploader
Dim Uploader, File
Set Uploader = New FileUploader
' Start upload
Uploader.Upload()
If not Uploader.Files.Count = 0 Then
For Each File In Uploader.Files.Items
' Save the file
strFileName = File.FileName
strFileExtension = Right(strFileName,Len(strFileName)-InStrRev(strFileName, "."))
File.FileName = Session("userID") & ".jpg"
Call File.SaveToDisk(server.mappath("/") &"\\klass\\pic\\users\\")
If not lCase(strFileExtension) = "jpg" OR File.FileSize \> 20480 Then
Set fso = Server.CreateObject("Scripting.FileSystemObject")
fso.DeleteFile(server.mappath("/") &"\\klass\\pic\\users\\" & File.FileName)
%\>\<!-- #include virtual="/klass/layout1.asp" --\>\<%
Response.Write "Den uppladdade filen var avfel typ eller för stor. Den är nu raderad. Försök igen!\<P\>\<A HREF=""javascript:history.go(-1);""\>\<B\>\<\<\< Tillbaka\</B\>\</A\>"
%\>\<!-- #include virtual="/klass/layout2.asp" --\>\<%
Else
Response.Redirect "profil.asp?pyssel=info#fragor"
End If
Next
End If
%>
upload.asp
<%
Class FileUploader
Public Files
Private mcolFormElem
Private Sub Class_Initialize()
Set Files = Server.CreateObject("Scripting.Dictionary")
Set mcolFormElem = Server.CreateObject("Scripting.Dictionary")
End Sub
Private Sub Class_Terminate()
If IsObject(Files) Then
Files.RemoveAll()
Set Files = Nothing
End If
If IsObject(mcolFormElem) Then
mcolFormElem.RemoveAll()
Set mcolFormElem = Nothing
End If
End Sub
Public Property Get Form(sIndex)
Form = ""
If mcolFormElem.Exists(LCase(sIndex)) Then Form = mcolFormElem.Item(LCase(sIndex))
End Property
Public Default Sub Upload()
Dim biData, sInputName
Dim nPosBegin, nPosEnd, nPos, vDataBounds, nDataBoundPos
Dim nPosFile, nPosBound
biData = Request.BinaryRead(Request.TotalBytes)
nPosBegin = 1
nPosEnd = InstrB(nPosBegin, biData, CByteString(Chr(13)))
If (nPosEnd-nPosBegin) \<= 0 Then Exit Sub
vDataBounds = MidB(biData, nPosBegin, nPosEnd-nPosBegin)
nDataBoundPos = InstrB(1, biData, vDataBounds)
Do Until nDataBoundPos = InstrB(biData, vDataBounds & CByteString("--"))
nPos = InstrB(nDataBoundPos, biData, CByteString("Content-Disposition"))
nPos = InstrB(nPos, biData, CByteString("name="))
nPosBegin = nPos + 6
nPosEnd = InstrB(nPosBegin, biData, CByteString(Chr(34)))
sInputName = CWideString(MidB(biData, nPosBegin, nPosEnd-nPosBegin))
nPosFile = InstrB(nDataBoundPos, biData, CByteString("filename="))
nPosBound = InstrB(nPosEnd, biData, vDataBounds)
If nPosFile \<\> 0 And nPosFile \< nPosBound Then
Dim oUploadFile, sFileName
Set oUploadFile = New UploadedFile
nPosBegin = nPosFile + 10
nPosEnd = InstrB(nPosBegin, biData, CByteString(Chr(34)))
sFileName = CWideString(MidB(biData, nPosBegin, nPosEnd-nPosBegin))
oUploadFile.FileName = Right(sFileName, Len(sFileName)-InStrRev(sFileName, "\\"))
nPos = InstrB(nPosEnd, biData, CByteString("Content-Type:"))
nPosBegin = nPos + 14
nPosEnd = InstrB(nPosBegin, biData, CByteString(Chr(13)))
oUploadFile.ContentType = CWideString(MidB(biData, nPosBegin, nPosEnd-nPosBegin))
nPosBegin = nPosEnd+4
nPosEnd = InstrB(nPosBegin, biData, vDataBounds) - 2
oUploadFile.FileData = MidB(biData, nPosBegin, nPosEnd-nPosBegin)
If oUploadFile.FileSize \> 0 Then Files.Add LCase(sInputName), oUploadFile
Else
nPos = InstrB(nPos, biData, CByteString(Chr(13)))
nPosBegin = nPos + 4
nPosEnd = InstrB(nPosBegin, biData, vDataBounds) - 2
If Not mcolFormElem.Exists(LCase(sInputName)) Then mcolFormElem.Add LCase(sInputName), CWideString(MidB(biData, nPosBegin, nPosEnd-nPosBegin))
End If
nDataBoundPos = InstrB(nDataBoundPos + LenB(vDataBounds), biData, vDataBounds)
Loop
End Sub
'String to byte string conversion
Private Function CByteString(sString)
Dim nIndex
For nIndex = 1 to Len(sString)
CByteString = CByteString & ChrB(AscB(Mid(sString,nIndex,1)))
Next
End Function
'Byte string to string conversion
Private Function CWideString(bsString)
Dim nIndex
CWideString =""
For nIndex = 1 to LenB(bsString)
CWideString = CWideString & Chr(AscB(MidB(bsString,nIndex,1)))
Next
End Function
End Class
Class UploadedFile
Public ContentType
Public FileName
Public FileData
Public Property Get FileSize()
FileSize = LenB(FileData)
End Property
Public Sub SaveToDisk(sPath)
Dim oFS, oFile
Dim nIndex
If sPath = "" Or FileName = "" Then Exit Sub
If Mid(sPath, Len(sPath)) \<\> "\\" Then sPath = sPath & "\\"
Set oFS = Server.CreateObject("Scripting.FileSystemObject")
If Not oFS.FolderExists(sPath) Then Exit Sub
Set oFile = oFS.CreateTextFile(sPath & FileName, True)
For nIndex = 1 to LenB(FileData)
oFile.Write Chr(AscB(MidB(FileData,nIndex,1)))
Next
oFile.Close
End Sub
End Class
%>
Hoppas du fixar det 