Avatar billede nidyahou Praktikant
18. april 2006 - 18:33 Der er 17 kommentarer og
2 løsninger

upload af filer til server

hej. Jeg kunne godt tænke mig at se en tutorial eller et script på hvad jeg skal bruge når jeg skal have uploadet filer til en server vha. asp. Hvordan kan jeg gøre det? Helst uden komponent
Avatar billede eagleeye Praktikant
18. april 2006 - 18:41 #1
Microsoft har faktisk lavet et eksempel med upload:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnasdj01/html/asp0900.asp


Koden kan downloades herfra, det er en bruger fra eksperten:
http://www.cwboy.dk/downloads/
Avatar billede hundevennen Nybegynder
18. april 2006 - 19:35 #2
den her bruger jeg

<%
    Dim UPLOAD_PATH


        UPLOAD_PATH    = Server.MapPath("startlister")

    Dim g_oFso, g_oFolder, g_oFile
        Set g_oFso    = Server.CreateObject("Scripting.FileSystemObject")
        Set g_oFolder    = g_oFso.getFolder(UPLOAD_PATH)

    If (Request.ServerVariables("REQUEST_METHOD") = "POST") Then
        Dim g_oUpload
            Set g_oUpload    = get_upload_files()

        Dim fpos, fcontent
            fcontent    = g_oUpload("upload").Item("content")
        Set g_oFile    = g_oFso.CreateTextFile(UPLOAD_PATH & "\" & extract_filename(g_oUpload("upload").Item("filename")))
        For fpos = 1 to LenB(fcontent)
            g_oFile.Write chr(AscB(MidB(fcontent, fpos, 1)))
        Next
        g_oFile.Close: Set g_oFile    = Nothing

        Response.Redirect Request.ServerVariables("SCRIPT_NAME")
    End If

    Response.Write "<html><body><table width=500 cellpadding=0 cellspacing=0><tr><td align='center'><strong><font size=+1>Upload af startlister<br><br><br><br></font></strong></td></tr>"
    response.write "<tr><td><b>Uploadede startlister</b></td></tr>"
    Response.Write "<tr><td><hr></td></tr>"
    For Each g_oFile In g_oFolder.Files
      Response.Write "<tr><td><a href=""startlister/" & g_oFile.Name & """>" & g_oFile.name & "</a></td></tr>"
    Next
    Response.Write "<tr><td><hr></td></tr>"
    Response.Write "<tr><td align=""right""><form name=""frmUpload"" method=""post"" enctype=""multipart/form-data"" action=""" & Request.ServerVariables("SCRIPT_NAME") & """>"
    Response.Write "<input type=""file"" name=""upload""> &nbsp; <input type=""submit"" value=""upload""></td></tr>"
    Response.Write "</table></body></html>"
   

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

%>
Avatar billede nidyahou Praktikant
18. april 2006 - 22:34 #3
hundeven > Server.Mappath hvad vil jeg skulle skifte den ud med?
Avatar billede hundevennen Nybegynder
19. april 2006 - 07:53 #4
UPLOAD_PATH    = Server.MapPath("ditbibliotekpåseveren")
Avatar billede nidyahou Praktikant
19. april 2006 - 17:16 #5
vil det fungere hvis jeg bruger MySQL ? der bruges jo ikke Server.Mappath
Avatar billede nidyahou Praktikant
19. april 2006 - 17:17 #6
arh glem det
Avatar billede nidyahou Praktikant
19. april 2006 - 17:23 #7
hundeven drop et svar :)
Avatar billede nidyahou Praktikant
19. april 2006 - 17:23 #8
og tak for buddet eagle :)
Avatar billede hundevennen Nybegynder
19. april 2006 - 17:48 #9
alt ok?
Avatar billede nidyahou Praktikant
19. april 2006 - 18:44 #10
på nær en komplikation > hvis jeg vil putte additional (kan ikke huske ordet på dansk) felter ind og vil bruger Request.Form så siger den at ejg ikke kan bruge Request.Form når jeg kræver at læse binært - selvom det binære krav er længere nede - hvad kan jeg gøre ved det?
Avatar billede hundevennen Nybegynder
19. april 2006 - 20:05 #11
additional = yderligere.
Scriptet er kun til upload af en fil ad gangen
Avatar billede nidyahou Praktikant
19. april 2006 - 20:22 #12
yup, men nu havde jeg en db som jeg gerne ville have noget tekst ind i så jeg kunne uploade et billede og knytte tekst til det. Så gemmer jeg stien, teksten, og "dækkenavnet" i DB'en og så ser brugeren det. Er det umuligt?
Avatar billede eagleeye Praktikant
19. april 2006 - 22:44 #13
Til information den kode jeg har linket til (http://www.cwboy.dk/downloads/) kan upload up til 10 filer og kan også håndtere de almendelige form felter som man normalt også har behov for.
Se doc: http://www.cwboy.dk/downloads/FUdoc.html

Når man uploader kan man ikke bruge Request.Form("xxx") man skal bruge en form collection som upload funktionen skal lave da den benytte Request.BinaryRead til at hente data med.
Avatar billede nidyahou Praktikant
20. april 2006 - 14:30 #14
dvs. jeg ikke kan skrive en tekst til den fil jeg uploader??

eagle > den kode du har er lidt for svær at følge med i, jeg synes det er nemmere at se hvad der sker (som jeg kan bruge In Case jeg selv ville kode et filesystem en dag uden at have et premade) :o)
Avatar billede hundevennen Nybegynder
22. april 2006 - 14:53 #15
hvis du vil skrive tekst til den fil du uploader - bliver du nødt til at lave en anden form med f.eks et tekst felt til at beskrive din fil/billede og så indsætte det i en database ovt. med en henvisning til billedet og derefter så hente billederne og tekst ud på en anden side
Avatar billede nidyahou Praktikant
22. april 2006 - 17:57 #16
det var faktisk lige det jeg fik lavet :) lidt kringlet med nogle redirects og informationer direkte ind i URL'en og sårn, men det fungerer. ET ALLERSIDSTE spørgsmål :) koden for at slette en fil igen, hvad er den?
Avatar billede hundevennen Nybegynder
23. april 2006 - 10:25 #17
<%@ Language=VBScript %>
<% Option Explicit %>

<%
Const ImageFilePath = "fotos"
Const DeleteButtonLabel = "Slet valgte fotos"

Dim objFSO
Dim objFolder
Dim objFile

Dim strFileName
Dim strFileExtension

Dim blnShowImages

If Request.QueryString("ShowImages") = "" Then
    blnShowImages = False
Else
    blnShowImages = CBool(Request.QueryString("ShowImages"))
End If

If Request.Form("btnDelete") = DeleteButtonLabel Then
    Set objFSO = Server.CreateObject("Scripting.FileSystemObject")

    For Each strFileName In Request.Form("delete")
        objFSO.DeleteFile(Server.MapPath(ImageFilePath & "/" & strFileName))
    Next ' strFileName

    Set objFSO = Nothing
End If
%>
<html>
<head>
  <title>Fotoredigering</title>
</head>
<body background="bg_terner-mork.gif">

<form action="<%= Request.ServerVariables("URL") %>" method="post">

<table border="1">
<tr>
    <th>Fil navn</th>
    <th>Billed <a href="<%= Request.ServerVariables("URL") %>?ShowImages=<%= Not blnShowImages %>">(Se fotos)</a></th>
    <th>Slet dette billede</th>
</tr>
<%
Set objFSO = Server.CreateObject("Scripting.FileSystemObject")
Set objFolder = objFSO.GetFolder(Server.MapPath(ImageFilePath))

For Each objFile In objFolder.Files
    strFileExtension = LCase(Mid(objFile.Name, InStrRev(objFile.Name, ".", -1, 1) + 1))

    If strFileExtension = "gif" Or strFileExtension = "jpg" Or strFileExtension = "jpeg" Then
    ' Original image file identification option:
    'If objFile.Type = "GIF Image" Or objFile.Type = "JPEG Image" Then
        %>
        <tr>
        <td>
            <a href="<%= ImageFilePath & "/" & objFile.Name %>"><%= objFile.Name %></a>
        </td>
        <%
        If blnShowImages Then
            %>
            <td>
                <img src="<%= ImageFilePath & "/" & objFile.Name %>" />
            </td>
            <%
        Else
            %>
            <td>
                <a href="<%= ImageFilePath & "/" & objFile.Name %>">View Image</a>
            </td>
            <%
        End If
        %>
        <td align="center">
            <input type="checkbox" name="delete" value="<%= objFile.Name %>" />
        </td>
        <%
    End If
Next ' objFile

Set objFolder = Nothing
Set objFSO = Nothing
%>
<tr>
    <td colspan="3" align="right">
        <input type="submit" name="btnDelete" value="<%= DeleteButtonLabel %>">
    </td>
</tr>
</table>

</form>

</body>
</html>
Avatar billede hundevennen Nybegynder
23. april 2006 - 10:26 #18
der skal du jo så også lige ændre stien i 4 linie til der hvor du har sine fotos liggende
Avatar billede nidyahou Praktikant
23. april 2006 - 13:25 #19
tak
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