Avatar billede klingeling Nybegynder
13. maj 2003 - 08:19 Der er 12 kommentarer og
1 løsning

Upload funktion til hjemmeside

Hej jeg er ikke en programør så bær over med mig. Men jeg skal bruge en Upload funktion til en hjemmeside. En af typen hvor man kan trykke på en knap og browse sin egen coputer og så sende filen. Den skulle helst virke så den uploader til en ftp. Eller er det en dårlig ide ?
På forhånd tak
Avatar billede dk_akj Nybegynder
13. maj 2003 - 08:34 #1
Hvilke komponenter (aspupload / aspsmartupload ) har du ??

//akj
Avatar billede klingeling Nybegynder
13. maj 2003 - 08:37 #2
ja se det er her mine evner ikke kan være med. Så hvis du søger hvad den hedder......freeASPupload. Den ligger over to filer. Men kan da lige ligge kopi af script ind her hvis det er ?
Avatar billede dk_akj Nybegynder
13. maj 2003 - 08:38 #3
Det vil være fint.

//akj
Avatar billede klingeling Nybegynder
13. maj 2003 - 08:43 #4
DETTE ER DEN ENE SIDE !!!
<%@ Language=VBScript %>
<%
option explicit
Response.Expires = -1
Server.ScriptTimeout = 600
%>
<!-- #include file="freeaspupload.asp" -->
<%


' ****************************************************
' Change the value of the variable below to the pathname
' of a directory with write permissions, for example "C:\Inetpub\wwwroot"
  Dim uploadsDirVar
  uploadsDirVar = "C:\Inetpub\wwwroot\upload"
' ****************************************************

' Note: this file uploadTester.asp is just an example to demonstrate
' the capabilities of the freeASPUpload.asp class. There are no plans
' to add any new features to uploadTester.asp itself. Feel free to add
' your own code. If you are building a content management system, you
' may also want to consider this script: http://www.webfilebrowser.com/

function OutputForm()
%>
    <form name="frmSend" method="POST" enctype="multipart/form-data" action="uploadTester.asp" onSubmit="return onSubmitForm();">
    File 1: <input name=attach1 type=file size=35><br>
    File 2: <input name=attach2 type=file size=35><br>
    File 3: <input name=attach3 type=file size=35><br>
    File 4: <input name=attach4 type=file size=35><br>
    <br>
    <input style="margin-top:4" type=submit value="Upload">
    </form>
<%
end function

function TestEnvironment()
    Dim fso, fileName, testFile, streamTest
    TestEnvironment = ""
    Set fso = Server.CreateObject("Scripting.FileSystemObject")
    if not fso.FolderExists(uploadsDirVar) then
        TestEnvironment = "<B>Folder " & uploadsDirVar & " does not exist.</B><br>The value of your uploadsDirVar is incorrect. Open uploadTester.asp in an editor and change the value of uploadsDirVar to the pathname of a directory with write permissions."
        exit function
    end if
    fileName = uploadsDirVar & "\test.txt"
    on error resume next
    Set testFile = fso.CreateTextFile(fileName, true)
    If Err.Number<>0 then
        TestEnvironment = "<B>Folder " & uploadsDirVar & " does not have write permissions.</B><br>The value of your uploadsDirVar is incorrect. Open uploadTester.asp in an editor and change the value of uploadsDirVar to the pathname of a directory with write permissions."
        exit function
    end if
    Err.Clear
    testFile.Close
    fso.DeleteFile(fileName)
    If Err.Number<>0 then
        TestEnvironment = "<B>Folder " & uploadsDirVar & " does not have delete permissions</B>, although it does have write permissions.<br>Change the permissions for IUSR_<I>computername</I> on this folder."
        exit function
    end if
    Err.Clear
    Set streamTest = Server.CreateObject("ADODB.Stream")
    If Err.Number<>0 then
        TestEnvironment = "<B>The ADODB object <I>Stream</I> is not available in your server.</B><br>Check the Requirements page for information about upgrading your ADODB libraries."
        exit function
    end if
    Set streamTest = Nothing
end function

function SaveFiles
    Dim Upload, fileName, fileSize, ks, i, fileKey

    Set Upload = New FreeASPUpload
    Upload.Save(uploadsDirVar)

    SaveFiles = ""
    ks = Upload.UploadedFiles.keys
    if (UBound(ks) <> -1) then
        SaveFiles = "<B>Files uploaded:</B> "
        for each fileKey in Upload.UploadedFiles.keys
            SaveFiles = SaveFiles & Upload.UploadedFiles(fileKey).FileName & " (" & Upload.UploadedFiles(fileKey).Length & "B) "
        next
    else
        SaveFiles = "The file name specified in the upload form does not correspond to a valid file in the system."
    end if
end function
%>

<HTML>
<HEAD>
<TITLE>Test Free ASP Upload</TITLE>
<style>
BODY {background-color: white;font-family:arial; font-size:12}
</style>
<script>
function onSubmitForm() {
    var formDOMObj = document.frmSend;
    if (formDOMObj.attach1.value == "" && formDOMObj.attach2.value == "" && formDOMObj.attach3.value == "" && formDOMObj.attach4.value == "" )
        alert("Please press the browse button and pick a file.")
    else
        return true;
    return false;
}
</script>

</HEAD>

<BODY>

<br><br>
<div style="border-bottom: #A91905 2px solid;font-size:16">Upload files to your server</div>
<%
Dim diagnostics
if Request.ServerVariables("REQUEST_METHOD") <> "POST" then
    diagnostics = TestEnvironment()
    if diagnostics<>"" then
        response.write "<div style=""margin-left:20; margin-top:30; margin-right:30; margin-bottom:30;"">"
        response.write diagnostics
        response.write "<p>After you correct this problem, reload the page."
        response.write "</div>"
    else
        response.write "<div style=""margin-left:150"">"
        OutputForm()
        response.write "</div>"
    end if
else
    response.write "<div style=""margin-left:150"">"
    OutputForm()
    response.write SaveFiles()
    response.write "<br><br></div>"
end if

%>

<div style="border-top: #A91905 2px solid;font-size:10">Powered by <A HREF="http://www.freeaspupload.net/" style="color:black">Free ASP Upload</A></div>

</BODY>
</HTML>
DETTE ER SÅ SIDE TO SOM MAN IKKE KAN SE I PREWIEV !
<%
'  For examples, documentation, and your own free copy, go to:
http://www.freeaspupload.net
'  Note: You can copy and use this script for free and you can make changes
'  to the code, but you cannot remove the above comment.

Class FreeASPUpload
    Public UploadedFiles
    Public FormElements

    Private VarArrayBinRequest
    Private StreamRequest
    Private uploadedYet

    Private Sub Class_Initialize()
        Set UploadedFiles = Server.CreateObject("Scripting.Dictionary")
        Set FormElements = Server.CreateObject("Scripting.Dictionary")
        Set StreamRequest = Server.CreateObject("ADODB.Stream")
        StreamRequest.Type = 1 'adTypeBinary
        StreamRequest.Open
        uploadedYet = false
    End Sub
   
    Private Sub Class_Terminate()
        If IsObject(UploadedFiles) Then
            UploadedFiles.RemoveAll()
            Set UploadedFiles = Nothing
        End If
        If IsObject(FormElements) Then
            FormElements.RemoveAll()
            Set FormElements = Nothing
        End If
        StreamRequest.Close
        Set StreamRequest = Nothing
    End Sub

    Public Property Get Form(sIndex)
        Form = ""
        If FormElements.Exists(LCase(sIndex)) Then Form = FormElements.Item(LCase(sIndex))
    End Property

    Public Property Get Files()
        Files = UploadedFiles.Items
    End Property

    'Calls Upload to extract the data from the binary request and then saves the uploaded files
    Public Sub Save(path)
        Dim streamFile, fileItem

        if Right(path, 1) <> "\" then path = path & "\"

        if not uploadedYet then Upload

        For Each fileItem In UploadedFiles.Items
            Set streamFile = Server.CreateObject("ADODB.Stream")
            streamFile.Type = 1
            streamFile.Open
            StreamRequest.Position=fileItem.Start
            StreamRequest.CopyTo streamFile, fileItem.Length
            streamFile.SaveToFile path & fileItem.FileName, 2
            streamFile.close
            Set streamFile = Nothing
            fileItem.Path = path & fileItem.FileName
        Next
    End Sub

    Public Sub DumpData() 'only works if files are plain text
        Dim i, aKeys, f
        response.write "Form Items:<br>"
        aKeys = FormElements.Keys
        For i = 0 To FormElements.Count -1 ' Iterate the array
            response.write aKeys(i) & " = " & FormElements.Item(aKeys(i)) & "<BR>"
        Next
        response.write "Uploaded Files:<br>"
        For Each f In UploadedFiles.Items
            response.write "Name: " & f.FileName & "<br>"
            response.write "Type: " & f.ContentType & "<br>"
            response.write "Start: " & f.Start & "<br>"
            response.write "Size: " & f.Length & "<br>"
        Next
      End Sub

    Private Sub Upload()
        Dim nCurPos, nDataBoundPos, nLastSepPos
        Dim nPosFile, nPosBound
        Dim sFieldName

        'RFC1867 Tokens
        Dim vDataSep
        Dim tNewLine, tDoubleQuotes, tTerm, tFilename, tName, tContentDisp, tContentType
        tNewLine = Byte2String(Chr(13))
        tDoubleQuotes = Byte2String(Chr(34))
        tTerm = Byte2String("--")
        tFilename = Byte2String("filename=""")
        tName = Byte2String("name=""")
        tContentDisp = Byte2String("Content-Disposition")
        tContentType = Byte2String("Content-Type:")

        uploadedYet = true

        VarArrayBinRequest = Request.BinaryRead(Request.TotalBytes)

        nCurPos = FindToken(tNewLine,1) 'Note: nCurPos is 1-based (and so is InstrB, MidB, etc)

        If nCurPos <= 1  Then Exit Sub
       
        'vDataSep is a separator like -----------------------------21763138716045
        vDataSep = MidB(VarArrayBinRequest, 1, nCurPos-1)

        'Start of current separator
        nDataBoundPos = 1

        'Beginning of last line
        nLastSepPos = FindToken(vDataSep & tTerm, 1)

        Do Until nDataBoundPos = nLastSepPos
           
            nCurPos = SkipToken(tContentDisp, nDataBoundPos)
            nCurPos = SkipToken(tName, nCurPos)
            sFieldName = ExtractField(tDoubleQuotes, nCurPos)

            nPosFile = FindToken(tFilename, nCurPos)
            nPosBound = FindToken(vDataSep, nCurPos)
           
            If nPosFile <> 0 And  nPosFile < nPosBound Then
                Dim oUploadFile, sFileName
                Set oUploadFile = New UploadedFile
               
                nCurPos = SkipToken(tFilename, nCurPos)
                sFileName = ExtractField(tDoubleQuotes, nCurPos)
                oUploadFile.FileName = Right(sFileName, Len(sFileName)-InStrRev(sFileName, "\"))

                if (Len(oUploadFile.FileName) > 0) then 'File field not left empy
                    nCurPos = SkipToken(tContentType, nCurPos)
                   
                    oUploadFile.ContentType = ExtractField(tNewLine, nCurPos)
                    nCurPos = FindToken(tNewLine, nCurPos) + 4 'skip empty line
                   
                    oUploadFile.Start = nCurPos-1
                    oUploadFile.Length = FindToken(vDataSep, nCurPos) - 2 - nCurPos
                   
                    If oUploadFile.Length > 0 Then UploadedFiles.Add LCase(sFieldName), oUploadFile
                End If
            Else
                Dim nEndOfData
                nCurPos = FindToken(tNewLine, nCurPos) + 4 'skip empty line
                nEndOfData = FindToken(vDataSep, nCurPos) - 2
                If Not FormElements.Exists(LCase(sFieldName)) Then FormElements.Add LCase(sFieldName), String2Byte(MidB(VarArrayBinRequest, nCurPos, nEndOfData-nCurPos))
            End If

            'Advance to next separator
            nDataBoundPos = FindToken(vDataSep, nCurPos)
        Loop
        StreamRequest.Write(VarArrayBinRequest)
    End Sub

    Private Function SkipToken(sToken, nStart)
        SkipToken = InstrB(nStart, VarArrayBinRequest, sToken)
        If SkipToken = 0 then
            Response.write "Error in parsing uploaded binary request."
            Response.End
        end if
        SkipToken = SkipToken + LenB(sToken)
    End Function

    Private Function FindToken(sToken, nStart)
        FindToken = InstrB(nStart, VarArrayBinRequest, sToken)
    End Function

    Private Function ExtractField(sToken, nStart)
        Dim nEnd
        nEnd = InstrB(nStart, VarArrayBinRequest, sToken)
        If nEnd = 0 then
            Response.write "Error in parsing uploaded binary request."
            Response.End
        end if
        ExtractField = String2Byte(MidB(VarArrayBinRequest, nStart, nEnd-nStart))
    End Function

    Public Function SaveBinRequest(path) ' For debugging purposes
        StreamRequest.SaveToFile path & "debugStream.bin", 2
    End Function

    'String to byte string conversion
    Private Function Byte2String(sString)
        Dim i
        For i = 1 to Len(sString)
          Byte2String = Byte2String & ChrB(AscB(Mid(sString,i,1)))
        Next
    End Function

    'Byte string to string conversion
    Private Function String2Byte(bsString)
        Dim i
        String2Byte =""
        For i = 1 to LenB(bsString)
          String2Byte = String2Byte & Chr(AscB(MidB(bsString,i,1)))
        Next
    End Function
End Class

Class UploadedFile
    Public ContentType
    Public FileName
    Public Start
    Public Length
    Public Path
End Class
%>
Avatar billede klingeling Nybegynder
13. maj 2003 - 08:46 #5
men kan også sende det med en mail hvis det er ?
Avatar billede dk_akj Nybegynder
13. maj 2003 - 08:47 #6
Hvilken Windows bruger du ??

//akj
Avatar billede klingeling Nybegynder
13. maj 2003 - 08:50 #7
jeg køre med xp pro. Og den hjemmeside det skal ligge på er et webhotel so det skal jo "bare " kører ude i byen
Avatar billede dk_akj Nybegynder
13. maj 2003 - 09:01 #8
Oki, så skal du:
1: Uploade de 2 filer du har sendt til webserveren
2: Oprette en subfolder hvor du har skriverettigheder.
3: rette uploadsDirVar = d:\.... til  uploadsDirVar =  server.mappath(".") & "\files" hvor files er den folder du har oprettet.
4: Åbne filen uploadTester.asp i din browser. vælge fil og uploade.

//akj
Avatar billede klingeling Nybegynder
13. maj 2003 - 09:04 #9
den subfolder.....den skal vel ligge på min egen ftp så ? For det skal bare uploades til min egen computer frahjemmesiden af ?
Avatar billede dk_akj Nybegynder
13. maj 2003 - 10:03 #10
Nej, med din ftp opretter du en subfolder på webserveren, kald den files.

De filer du så uploader kommer til at ligge på webserveren i folderen files.

//akj
Avatar billede dta Nybegynder
13. maj 2003 - 13:44 #11
Jeg har brugt denne "komponent" ikke kombileret. Nemt og sikkert. Den indeholde også en demo til det du ønsker at lave.

http://www.planetsourcecode.com/vb/scripts/ShowCode.asp?txtCodeId=7361&lngWId=4
Avatar billede klingeling Nybegynder
14. maj 2003 - 08:15 #12
ej jeg er da kommet til at gøre noget forkert med de point nu....I må lige gi en hånd for nu ser det jo ud til jeg har behold dem , ikke ?
Avatar billede dk_akj Nybegynder
14. maj 2003 - 10:03 #13
Hvis de var tiltænkt mig laver jeg da bare et svar mere :-=

//akj
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