Avatar billede neessen Nybegynder
20. november 2003 - 23:51 Der er 6 kommentarer og
1 løsning

Download og sletning via ASPupload

Hejsa,

Jeg har en side med en upload-funktion, som gemmer filnavn og en beskrivelse i en access DB og gemmer selve filen i en mappe. Jeg har nu ønske om at oprette en download funktion samt en slette funktion.
Ved download funktionen skal den pågældende fil forblive på serveren.
Ved sletning kan jeg godt få slet oplysningerne i databasen, men jeg får ikke fjernet filen fra serveren.
Er der nogle, som ligger inde med nogen kodeeksempler eller løsningsforslag til de 2 ovennævnte problemstilling?
Avatar billede dk_akj Nybegynder
21. november 2003 - 07:21 #1
Her er lidt jeg har klippet ud fra en kørende side.
Jeg har dog rettet lidt i det. da der var noget rettighedsstyrring med i det.

Til download bruger du bare en <a href=./files/filnavn.xyz>download</a>

********* start delfile.asp **********

<!--#include file="../inc/connect.asp"-->

    <script language="JavaScript">
        function deletefile(fname,fid){
            if (confirm("Vil du slette filen " + fname + " ?"))
            {
            document.sletfil.fileid.value = fid;
            document.sletfil.submit();
            }
        }
    </script>

<form action="delfile.asp" method="post" name="sletfil" id="sletfil">
    <input type="Hidden" name=fileid id=fileid value=0>
</form>

<%


set rs = conn.execute("select * from files")


%>
<table width="100%" border="0" cellspacing="0" cellpadding="0" align="left">
    <tr>
        <td>
            <table width="100%" border="0">
                <tr>
                    <td width="100%" colspan=5    align="center" id="TabelHeader">Uploadede filer</td>
                </tr>
                <tr>
                    <td colspan=5>&nbsp;</td>
                </tr>
                <tr>
                    <td id=tabeldata>Filnavn</td>
                    <td id=tabeldata>Beskrivelse</td>                   
                    <td id=tabeldata>Uploaded af</td>                   
                    <td id=tabeldata>&nbsp;</td>                   
                    <td id=tabeldata>Antal downloads</td>                                       
                </tr>
                <tr>
                    <td colspan=5><hr id=tabelhr></td>
                </tr>

<%


if not rs.eof then
    do while not rs.eof
        response.write ("<tr>")
        response.write "<td id=tabeldata ><a href=../uploads/files/" & rs("filename") & " id=tabeldata> "  & rs("filename") & "</a></td>"
        response.write "<td id=tabeldata >" & rs("description") & "</td>"
        response.write "<td onClick=""deletefile('"&rs("description")&"',"& rs("files.id") &");"" id=tabeldatahand >Slet</td>"               
        response.write "<td align=right id=tabeldata >" & rs("downloads") & "</td>"
        response.write "</tr>"
        rs.movenext
    loop

end if

%>
            </table>
        </td>
    </tr>
</table>       

********* end delfile.asp **********

//akj
Avatar billede dk_akj Nybegynder
21. november 2003 - 07:24 #2
FEJL !!! Ovenstående fil hedder filelist.asp o viser uploadede filer

Her kommer delfile.asp, som sletter den ønskede fil :-)

********* start delfile.asp **********

<!--#include file="../inc/connect.asp"-->

<%


   
    file = request.form("fileid")
   
    sql = "select filename,id from files where id = "& file
'    response.write sql
    set rs = conn.execute(sql)
   
    if not rs.eof then
        filename =  server.mappath("..")&"\uploads\files\" &  rs("filename")
        response.write "sletter " & filename
        set fso = server.createobject("scripting.filesystemobject")
        set file = fso.getfile ( filename)
        file.delete
       
        sql = "delete from filedeptrel where file_id = " & rs("id")
        response.write sql & "<br>"
        conn.execute ( sql )
        sql = "delete from files where id = " & rs("id")
        response.write sql & "<br>"
        conn.execute ( sql )       
       
        response.redirect "filelist.asp"
    else
        response.write "Kunne ikke slette filen"   
    end if

%>
<!--#include file="../inc/adminbot.asp"-->



********* slut delfile.asp **********




//akj
Avatar billede neessen Nybegynder
21. november 2003 - 12:16 #3
Hej AKJ,

Jeg har nu fået sletningen til at virke, men med hensyn til download gør jeg allerede i dag brug af:
<td><A HREF="../data/<%=rsDok("Filnavn")%>" title="Ønsker du at downloade denne fil"><%=rsDok ("Filnavn")%></a></td>
Men når jeg klikker på dette link får jeg http fejl 404 - file not found, selvom jeg kan se i statuslinje, at det er den rigtige sti. Hvad gør jeg galt. De typer dokumenter jeg ønsker at uploade og downloade er alle filertyper.
Avatar billede dk_akj Nybegynder
21. november 2003 - 14:10 #4
Hmm
Findes filen ??
Er der ophold i filnavnet ??
Er der http adgang til folderen data ??

//akj
Avatar billede neessen Nybegynder
21. november 2003 - 15:49 #5
Filen findes og der er ikke ophold i filnavnet. Hvorledes kan jeg kontrollere om der er HTTP adgang til mappen?
Avatar billede dk_akj Nybegynder
21. november 2003 - 20:46 #6
Er det din egen server ??

som regel er et website opbygget således.

ditesite.dk
  www
  folder1
  folder2
  db
  log

www er "root" dvs af det er udgangsfolderen for webserveren.

i db har du din database liggende, i denne folder er der ikke httpadgang, dvs at man ikke kan downloade databasen

i log ligger logfilerne fra IIS

hvis din folderstruktur ser ud som det efterfølgende:

  www
  folder1
  folder2
  db
  log
  data

Og dine billeder ligger i data så er der sikekrt ikke httpadgang.

Er det tilfældet så prøv at flytte folderen data op som en subfolder til www.

//Akj
Avatar billede dk_akj Nybegynder
23. november 2003 - 18:37 #7
Hvad var fejlen ??

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