Avatar billede mvk Nybegynder
23. oktober 2003 - 13:51 Der er 13 kommentarer og
1 løsning

Upload til brugerdefineret bibliotek

jeg har en standard upload funktion, men hvordan kan jeg implementere en listmenu så den uploader til det bibliotek der passer til?

http://border-wines.dk.virker.nu/admin/vin/upload_billede.asp

3 filer:
upload, uploaded, loader

kode for uploaded:
<%@LANGUAGE="VBSCRIPT" CODEPAGE="1252"%>
<!--#include file="loader.asp"-->
<%
    Response.Buffer = True

    ' load object
    Dim load
        Set load = new Loader
       
        ' calling initialize method
        load.initialize
       
    ' File binary data
    Dim fileData
        fileData = load.getFileData("file")
    ' File name
    Dim fileName
        fileName = LCase(load.getFileName("file"))
    ' File path
    Dim filePath
        filePath = load.getFilePath("file")
    ' File path complete
    Dim filePathComplete
        filePathComplete = load.getFilePathComplete("file")
    ' File size
    Dim fileSize
        fileSize = load.getFileSize("file")
    ' File size translated
    Dim fileSizeTranslated
        fileSizeTranslated = load.getFileSizeTranslated("file")
    ' Content Type
    Dim contentType
        contentType = load.getContentType("file")
    ' No. of Form elements
    Dim countElements
        countElements = load.Count
    ' Value of text input field "name"
    Dim nameInput
        nameInput = load.getValue("name")
    ' Path where file will be uploaded
    Dim pathToFile
        pathToFile = Server.mapPath("../../images/vin/") & "\" & fileName
    ' Uploading file data
    Dim fileUploaded
        fileUploaded = load.saveToFile ("file", pathToFile)
       
    ' destroying load object
    Set load = Nothing
%>
<html>
<head>
<title>Untitled Document</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<link href="stylesheet.css" rel="stylesheet" type="text/css">
</head>

<body>
<span class="10BlackNormal">
<%
        If fileUploaded = True Then
            Response.Write fileName & " data uploaded..."
            Else
            Response.Write "<font color=""red"">Filen kunne desværre ikke uploades...</font>"
            Response.Write "<br>Vælg venligst en fil før du trykker på 'Upload'."
        End If
%>
</span>
<table width="100%">
<form method="POST" enctype="multipart/form-data" action="uploaded.asp">
    <tr>
<td width="100" class="10BlackNormal">Type:</td>
      <td>
        <select name="type" class="fields" id="type">
          <option>V&aelig;lg</option>
          <option value="Vin">Vin</option>
          <option value="Land">Land</option>
          <option value="Distrikt">Distrikt</option>
          <option value="Producent">Producent</option>
        </select></td>
    </tr>
    <tr>
<td width="100" class="10BlackNormal">Fil:</td>
      <td>
<input name="file" type="file" id="file5" class="fields"></td>
    </tr>
    <tr>
<td width="100" class="10BlackNormal">&nbsp;</td>
      <td>&nbsp;</td>
    </tr>
    <tr>
<td width="100" class="10BlackNormal">&nbsp;</td>
      <td>
        <input name="submit" type="submit" value="Upload" class="buttons"></td>
    </tr>
  </form>
</table>
</body>
</html>

jeg går ud fra at det er 'pathToFile = Server.mapPath("../../images/vin/") & "\" & fileName' der skal gøres noget ved, men jeg ved ikke hvad det er.

biblioteker:
../../images/vin/ = vin
../../images/land/ = land
osv...
Avatar billede ellebaek Nybegynder
23. oktober 2003 - 15:12 #1
<%@LANGUAGE="VBSCRIPT" CODEPAGE="1252"%>
<!--#include file="loader.asp"-->
<%
    Response.Buffer = True

    ' load object
    Dim load
        Set load = new Loader
       
        ' calling initialize method
        load.initialize
       
    ' File binary data
    Dim fileData
        fileData = load.getFileData("file")
    ' File name
    Dim fileName
        fileName = LCase(load.getFileName("file"))
    ' File path
    Dim filePath
        filePath = load.getFilePath("file")
    ' File path complete
    Dim filePathComplete
        filePathComplete = load.getFilePathComplete("file")
    ' File size
    Dim fileSize
        fileSize = load.getFileSize("file")
    ' File size translated
    Dim fileSizeTranslated
        fileSizeTranslated = load.getFileSizeTranslated("file")
    ' Content Type
    Dim contentType
        contentType = load.getContentType("file")
    ' No. of Form elements
    Dim countElements
        countElements = load.Count
    ' Value of text input field "name"
    Dim nameInput
        nameInput = load.getValue("name")
    ' Path where file will be uploaded
    Dim pathToFile
if request.form("type") = "Vin" then
        pathToFile = Server.mapPath("../../images/vin/") & "\" & fileName
elseif request.form("type") = "Land" then
pathToFile = Server.mapPath("../../images/land/") & "\" & fileName
elseif request.form("type") = "Distrikt" then
pathToFile = Server.mapPath("../../images/distrikt/") & "\" & fileName
elseif request.form("type") = "Producent" then
pathToFile = Server.mapPath("../../images/producent/") & "\" & fileName
end if
    ' Uploading file data
    Dim fileUploaded
        fileUploaded = load.saveToFile ("file", pathToFile)
       
    ' destroying load object
    Set load = Nothing
%>
<html>
<head>
<title>Untitled Document</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<link href="stylesheet.css" rel="stylesheet" type="text/css">
</head>

<body>
<span class="10BlackNormal">
<%
        If fileUploaded = True Then
            Response.Write fileName & " data uploaded..."
            Else
            Response.Write "<font color=""red"">Filen kunne desværre ikke uploades...</font>"
            Response.Write "<br>Vælg venligst en fil før du trykker på 'Upload'."
        End If
%>
</span>
<table width="100%">
<form method="POST" enctype="multipart/form-data" action="uploaded.asp">
    <tr>
<td width="100" class="10BlackNormal">Type:</td>
      <td>
        <select name="type" class="fields" id="type">
          <option>V&aelig;lg</option>
          <option value="Vin">Vin</option>
          <option value="Land">Land</option>
          <option value="Distrikt">Distrikt</option>
          <option value="Producent">Producent</option>
        </select></td>
    </tr>
    <tr>
<td width="100" class="10BlackNormal">Fil:</td>
      <td>
<input name="file" type="file" id="file5" class="fields"></td>
    </tr>
    <tr>
<td width="100" class="10BlackNormal">&nbsp;</td>
      <td>&nbsp;</td>
    </tr>
    <tr>
<td width="100" class="10BlackNormal">&nbsp;</td>
      <td>
        <input name="submit" type="submit" value="Upload" class="buttons"></td>
    </tr>
  </form>
</table>
</body>
</html>
Avatar billede mvk Nybegynder
24. oktober 2003 - 09:23 #2
tak ellebaek...
men jeg får fejl:
HTTP 500 - Intern serverfejl
Internet Explorer
jeg kan ikke se hvad der er galt

er det kun denne del af koden du har ændret i:
' Path where file will be uploaded
    Dim pathToFile
if request.form("type") = "Vin" then
        pathToFile = Server.mapPath("../../images/vin/") & "\" & fileName
elseif request.form("type") = "Land" then
pathToFile = Server.mapPath("../../images/land/") & "\" & fileName
elseif request.form("type") = "Distrikt" then
pathToFile = Server.mapPath("../../images/distrikt/") & "\" & fileName
elseif request.form("type") = "Producent" then
pathToFile = Server.mapPath("../../images/producent/") & "\" & fileName
end if
Avatar billede ellebaek Nybegynder
25. oktober 2003 - 16:43 #3
ret if sætningen til:
if request.form("type") = "Vin" then
        pathToFile = Server.mapPath("../../images/vin/") & fileName
elseif request.form("type") = "Land" then
pathToFile = Server.mapPath("../../images/land/") & "\" & fileName
elseif request.form("type") = "Distrikt" then
pathToFile = Server.mapPath("../../images/distrikt/") & fileName
elseif request.form("type") = "Producent" then
pathToFile = Server.mapPath("../../images/producent/") & fileName
end if
Avatar billede ellebaek Nybegynder
25. oktober 2003 - 16:43 #4
rettelse:

if request.form("type") = "Vin" then
        pathToFile = Server.mapPath("../../images/vin/") & fileName
elseif request.form("type") = "Land" then
pathToFile = Server.mapPath("../../images/land/") & fileName
elseif request.form("type") = "Distrikt" then
pathToFile = Server.mapPath("../../images/distrikt/") & fileName
elseif request.form("type") = "Producent" then
pathToFile = Server.mapPath("../../images/producent/") & fileName
end if
Avatar billede mvk Nybegynder
26. oktober 2003 - 12:40 #5
jeg får denne fejl:

Request object error 'ASP 0207 : 80004005'

Cannot use Request.Form

/admin/include/uploaded_vin.asp, line 42

Cannot use Request.Form collection after calling BinaryRead.
Avatar billede ellebaek Nybegynder
26. oktober 2003 - 14:08 #6
if load.form("type") = "Vin" then
        pathToFile = Server.mapPath("../../images/vin/") & fileName
elseif load.form("type") = "Land" then
pathToFile = Server.mapPath("../../images/land/") & fileName
elseif load.form("type") = "Distrikt" then
pathToFile = Server.mapPath("../../images/distrikt/") & fileName
elseif load.form("type") = "Producent" then
pathToFile = Server.mapPath("../../images/producent/") & fileName
end if

prøv sådan her i stedet...
Avatar billede mvk Nybegynder
26. oktober 2003 - 14:44 #7
så skriver den:
Microsoft VBScript runtime error '800a01b6'

Object doesn't support this property or method: 'form'

/admin/include/uploaded_vin.asp, line 42
Avatar billede ellebaek Nybegynder
26. oktober 2003 - 14:47 #8
ok...

5 min så kigger jeg på det..!
Avatar billede ellebaek Nybegynder
26. oktober 2003 - 14:58 #9
hvad står der i loader?
Avatar billede mvk Nybegynder
26. oktober 2003 - 19:08 #10
loader.asp:

<%
    ' -- Loader.asp --
    ' -- version 1.5
    ' -- last updated 6/13/2002
    '
    ' Faisal Khan
    ' faisal@stardeveloper.com
    ' www.stardeveloper.com
    ' Class for handling binary uploads
   
    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
%>
Avatar billede ellebaek Nybegynder
26. oktober 2003 - 21:55 #11
Tror jeg fandt noget...
prøv:
if load.getValue("type") = "Vin" then
        pathToFile = Server.mapPath("../../images/vin/") & fileName
elseif load.getValue("type") = "Land" then
pathToFile = Server.mapPath("../../images/land/") & fileName
elseif load.getValue("type") = "Distrikt" then
pathToFile = Server.mapPath("../../images/distrikt/") & fileName
elseif load.getValue("type") = "Producent" then
pathToFile = Server.mapPath("../../images/producent/") & fileName
end if
Avatar billede mvk Nybegynder
27. oktober 2003 - 01:42 #12
super nu uploader den - men den sætter vin, land, distrikt eller producent foran filnavnet og den smider billederne i /images  og ikke i det pågældende bibliotek
Avatar billede ellebaek Nybegynder
27. oktober 2003 - 21:17 #13
if load.getValue("type") = "Vin" then
        pathToFile = Server.mapPath("../../images/vin/") & "\" & fileName
elseif load.getValue("type") = "Land" then
pathToFile = Server.mapPath("../../images/land/") & "\" & fileName
elseif load.getValue("type") = "Distrikt" then
pathToFile = Server.mapPath("../../images/distrikt/") & "\" & fileName
elseif load.getValue("type") = "Producent" then
pathToFile = Server.mapPath("../../images/producent/") & "\" & fileName
end if

Så skulle den \ som jeg slettede: 25/10-2003 16:43:38 være der alligevel. Prøv ovenstående if-sætning i stedet...
Så burde den være der...
Avatar billede mvk Nybegynder
28. oktober 2003 - 09:34 #14
u the man Ellebaek - tusinde tak for hjælpen :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester