Avatar billede rbl Praktikant
16. september 2002 - 10:27 Der er 14 kommentarer og
1 løsning

Uploading af filer

Jeg er igang med at lave en webside, hvor brugerne fra en webform skal kunne uploade et billede (.jpg). Når brugeren har valgt et billede (f.eks. c:\dokumenter\billeder\pic1.jpg), skal det uploades til webserveren (f.eks. (root)/picturepage/pics/pic1.jpg), og kun billednavnet - og ikke stien - skal gemmes i en database. Hvordan gør jeg det ?

Foreløbig er jeg kun kommet til <input type="file"...>
Avatar billede pelkjaer Nybegynder
16. september 2002 - 10:32 #1
Her er et fint eksempel/tutorial: http://www.aspheute.com/english/20000802.asp
Avatar billede odegaard Nybegynder
16. september 2002 - 10:37 #2
Prøv at lege lidt med det her eksempel (jeg tror jeg har posted det før, men kunne ikke lige finde det). Så er det jo bare lige at tilføje filnavnet til databasen.

<script language="VB" runat=server>
Sub myUploadCode(Sender as Object, E as EventArgs)
    Dim strFileName AS String
   
    '---- her finder vi filens navn ved at lede baglæns efter den første forekomst af \ (backslash) ----
    If InStr(upload_file.PostedFile.FileName, "\") > 0 Then
        strFileName = Mid(upload_file.PostedFile.FileName, InStrRev(upload_file.PostedFile.FileName, "\") + 1)
    Else
        strFileName = "ukendt.fil"
    End If
   
    '---- gem filen i den nuværende mappe på webserveren med filnavnet som er gemt i strengen strFileName ----
    upload_file.PostedFile.SaveAs(Server.MapPath(strFileName))

    '---- skriv besked i vores status label, og gør den synlig ----
    statustext.text = "<p>Filen <b>"& strFileName &"</b> er nu uploaded til serveren!"
    statustext.text = statustext.text & "<br><br><a href="""& strFileName &""" target=""_blank"">Klik her for at downloade filen "& strFileName &"</a> (åbner i nyt vindue)"
    statustext.text = statustext.text & "<br><br><a href=""upload.aspx"">Klik her for at uploade en ny fil</a></p>"

    statustext.visible = true
   
    '---- skjul formen ----
    uploadform.visible = false
End Sub
</script>

<html><head>
<title>Upload filer med ASP.NET</title>
</head><body>

<h2>Upload med ASP.NET</h2>

<form enctype="multipart/form-data" runat="server" id="uploadform" visible="true">
    <p>Vælg den fil som skal uploades til serveren:</p>

    <input id="upload_file" type="file" runat="server" /><br><br>
    <asp:button Text="Upload File" onClick="myUploadCode" runat="server" />
</form>

<asp:label id="statustext" visible="false" runat="server" />

</body></html>
Avatar billede odegaard Nybegynder
16. september 2002 - 10:41 #3
Herudover burde måske sætte nogle betingelser ind. F.eks. hvilke filtyper er tilladte, og hvor store filerne må være:
F.eks.:
'Tjek for filtype:
If InStr(strFileName, ".") > 0 Then
        strExtension = Mid(strFileName, InStrRev(strFileName, ".") + 1)
Else
            strExtension = ""
End If
Select Case strExtension
Case "gif","jpg","jpeg","png": 'Gør et eller andet
Case Else:
    StatusText.Text = "Fejl! Filen er ikke et billede<br/>"
    StatusText.Visible=True
    Exit Sub
End Select

'Tjek for filstørrelse
if upload_file.PostedFile.ContentLength>(1024*100) Then
    StatusText.Text = "Fejl! Filen er størrere end 100kb.<br/>"
    StatusText.Visible=True
    Exit Sub
End if
Avatar billede rbl Praktikant
16. september 2002 - 11:36 #4
Odegaard --> Tak, det virker fint. Jeg har dog lige et spørgsmål mere: hvordan sætter jeg den til at gemme billedet i en anden folder end den, som aspx-dokumentet ligger i ?  Det må have et eller andet med Server.MapPath at gøre...
Avatar billede odegaard Nybegynder
16. september 2002 - 11:45 #5
upload_file.PostedFile.SaveAs("C:\fileshare\" & strFileName)
Avatar billede odegaard Nybegynder
16. september 2002 - 11:46 #6
... du skal jo forresten først gemme, når du har tjekket at filen opfylder ovenstående betingelser (men det havde du vel regnet ud :)
Avatar billede rbl Praktikant
16. september 2002 - 11:56 #7
ja det kunne jeg godt regne ud :-)

Men jeg kender ikke mappestrukturen på serveren. Jeg har kun mit root-dir, hvorfra jeg kan lave undermapper. Så kan jeg ikke skrive et eller andet med upload_file.PostedFile.SaveAs("<root>/picfolder/" & strFileName) ?

Det tjek på filstørrelse kan jeg ikke få til at virke. Hvis jeg vælger en for stor fil, siger den bare, at siden ikke kan vises
Avatar billede odegaard Nybegynder
16. september 2002 - 12:05 #8
hmm... siger den siden ikke kan vises ???
Kan du debugge siderne derfra hvor du sidder? (det kan man ihvertfald hvis man sidder på localhost) Der kunne jo være en skrivefejl...

Din sti til root kan findes således: server.mappath("/")
Dvs. du skal f.eks. gemme i
          server.mappath("/") & "files\" & strFileName
Avatar billede odegaard Nybegynder
16. september 2002 - 12:06 #9
øh eller... server.mappath("/files/" & strFileName)
Avatar billede rbl Praktikant
16. september 2002 - 12:12 #10
jo, normalt kan jeg godt debugge herfra, men ikke ved netop denne fejl. Der kommer kun den standart fejlmeddelese "Siden kan ikke vises".
Avatar billede rbl Praktikant
16. september 2002 - 12:25 #11
Det kan også bare være skolens netværk, der kører ad h... til som sædvanlig :-)

Nå, men tak for svarene. Du har ærligt fortjent de 100 point :-)
Avatar billede odegaard Nybegynder
16. september 2002 - 12:28 #12
Prøv at lave en fil der hedder "web.config", smid den i www-root og skriv følgende i den:
<configuration>
  <system.web>
      <compilation debug="true"/>
  </system.web>
</configuration>


Så skulle du være istand til at se kode-fejl og lignende, selvom du ikke er på localhost.
Jeg takker for pointene.
Avatar billede rbl Praktikant
16. september 2002 - 12:36 #13
Det har jeg i forvejen. Det er derfor det undrer mig, at der ikke kommer en mere sigende fejl
Avatar billede charmekbh Nybegynder
16. marts 2004 - 22:10 #14
jeg er klar over at det ikke er helt relevant, men når jeg prøver at søge i en streng efter "\" får jeg "new line in constant" som kompileringsfejl. Bruger C# - har I nogen ideer?
Avatar billede mmp Nybegynder
11. november 2004 - 14:56 #15
Ja - du skriver @"\" i stedet for - så opfattes den ikke længere som new line in constant
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
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

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