Avatar billede ger2001 Novice
07. april 2005 - 10:34 Der er 30 kommentarer og
1 løsning

Upload filer til database

Jeg skal uploade nogle filer i en formular sammen med noget tekst. Jeg kan næsten regne ud at man skal uploade filen og så få filnavnet ned i access. Men hvordan fungere det i praksis. Hvordan forhindrer man filer i at blive overskrevet? Jeg havde tænkt på om man kunne bruge det ID nummer der automatiskt kommer?
Avatar billede busschou Praktikant
07. april 2005 - 23:03 #1
Hvis du har adgang til komponenten AspSmartUpload hos din udbyder så vil jeg foreslå dig at kigge her:
http://www.aspsmart.com/aspSmartUpload/
Avatar billede ger2001 Novice
08. april 2005 - 08:03 #2
har prøvet rode lidt med aspsmartupload men kan ikke rigtigt får det til at virke. Jeg skal bruge 1(eller flere) felter hvor man kan vælge filen. Når man trykker på en knap uploader den filerne til en mappe og gemmer stien i en database.
Avatar billede busschou Praktikant
08. april 2005 - 08:13 #3
Så kan du da bruge sample 2 fra linket
Der er en html side med en form på med mulighed for fire filer
Derudover er der en aspside som gemmer filerne på serveren
Det du mangler er så blot at lave en databaseforbindelse på asp siden og gemme stien
---------------
asp fil fra link sample 2 i ny udgave:
--------------
<%
  Dim mySmartUpload,file

  /Her laver du en forbindelse til din database med alt dertil og ender med Conn.open
       
  Set mySmartUpload = Server.CreateObject("aspSmartUpload.SmartUpload")
  mySmartUpload.Upload

  For each file In mySmartUpload.Files
      If not file.IsMissing Then
        file.SaveAs("/DIN_MAPPE/DIN_UPLOAD/" & file.FileName)
        ' eller med fysisk sti
        ' file.SaveAs("c:\temp\" & file.FileName)
        /Her laver du en Conn.execute("Insert Into din_tabel (filnavn) Values ('/DIN_MAPPE/DIN_UPLOAD/" & file.FileName &"')")
      End If
  Next
%>
Avatar billede busschou Praktikant
08. april 2005 - 08:15 #4
Hvis du vil forhindre at filer bliver overskrevet så skal du enten tjekke med databasen før du uploader eller tjekke med serveren om filen eksisterer
Men er det som regel ikke en fordel at en fil kan blive overskrevet?
Hvis den kommer i en ny version fx
Avatar billede ger2001 Novice
08. april 2005 - 08:24 #5
har prøvet eksemplerne, men når jeg trykker på upload siger den siden ikke kan vises.
Avatar billede busschou Praktikant
08. april 2005 - 08:27 #6
på html siden skal du huske at rette denne linje
<FORM METHOD="POST" ACTION="/scripts/aspSmartUpload/Sample2.asp" ENCTYPE="multipart/form-data">
Din asp side ligger jo næppe i mappen /scripts/aspSmartUpload/ og hedder næppe Sample2.asp
Avatar billede ger2001 Novice
08. april 2005 - 08:36 #7
sample2.asp
<%
  Dim mySmartUpload,file

  Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.Mappath("/database/db1.mdb")
mode = Request.QueryString("mode")
scriptname = Request.ServerVariables("SCRIPT_NAME")
       
  Set mySmartUpload = Server.CreateObject("aspSmartUpload.SmartUpload")
  mySmartUpload.Upload

  For each file In mySmartUpload.Files
      If not file.IsMissing Then
     
        file.SaveAs("c:\wwwroot\inetpub\filer\" & file.FileName)
        Conn.execute("Insert Into filer (filnavn) Values (\filer" & file.FileName &"')")
      End If
  Next
%>

-------------------------------------------------
test.htm

<HTML>
<BODY BGCOLOR="white">

<H1>aspSmartUpload : Sample 2</H1>
<HR>

<FORM METHOD="POST" ACTION="/Sample2.asp" ENCTYPE="multipart/form-data">
  <INPUT TYPE="FILE" NAME="FILE1" SIZE="50"><BR>
      <INPUT TYPE="SUBMIT" VALUE="Upload">
</FORM>

</BODY>
</HTML>

får denne fejl
Fejltype:
aspSmartUpload.File (0x80040460)
Unable to save file (Error 1120)
/Sample2.asp, line 15
Avatar billede busschou Praktikant
08. april 2005 - 09:37 #8
Det kunne godt skyldes at du ikke har skrive rettigheder i den mappe
Måske har du kun retighedder i en speciel upload mappe
Prøv evt tjekke det med din udbyder for det er nok mit bedste bud
Avatar billede ger2001 Novice
08. april 2005 - 09:43 #9
har imellemtiden løst det. Havde lagt aspsmartupload i forkert mappe:) Så kan godt oploade filnavnet i sample 4, men mangler stadig at den kopiere filen til en mappe.
Avatar billede busschou Praktikant
08. april 2005 - 09:46 #10
kopiere den?...er ikke med ...når du uploader den så gemmes den jo i den angivne mappe c:\wwwroot\inetpub\filer\" & file.FileName)
Avatar billede ger2001 Novice
08. april 2005 - 09:52 #11
Har egen server!!!
Avatar billede busschou Praktikant
08. april 2005 - 09:54 #12
ok så burde der jo ik være problemer der :o)
Avatar billede ger2001 Novice
08. april 2005 - 09:58 #13
Bliver ved med at få fejl i linie 52. Ved du hvad der er galt. har en tabel,filer, der består af idnummer + url
<HTML>
<BODY BGCOLOR="white">

<H1>aspSmartUpload : Sample 4</H1>
<HR>

<%
'  Variables
'  *********
  Dim mySmartUpload
  Dim file
  Dim oConn
  Dim strSQL
  Dim oRs
  Dim intCount
  intCount=0
       
'  Object creation
'  ***************
  Set mySmartUpload = Server.CreateObject("aspSmartUpload.SmartUpload")

'  Upload
'  ******
  mySmartUpload.Upload

'  Connect to the DB
'  *****************
  Set oConn = Server.CreateObject("ADODB.Connection")
  curDir = Server.MapPath("\database\db1.mdb")
  oConn.Open "DBQ="& curDir &";Driver={Microsoft Access Driver (*.mdb)};DriverId=25;FIL=MS Access;"

'  Open a recordset
'  ****************
  strSQL = "SELECT url,idnummer FROM filer"

  Set oRs = Server.CreateObject("ADODB.recordset")
  Set oRs.ActiveConnection = oConn
  oRs.Source = strSQL
  oRs.LockType = 3
  oRs.Open

'  Select each file
'  ****************
  For each file In mySmartUpload.Files
  '  Only if the file exist
  '  **********************
      If not file.IsMissing Then

      '  Add the current file in a DB field
      '  **********************************
        oRs.AddNew
        file.FileToField oRs.Fields("idnummer")
        oRs("filename") = file.FileName
        oRs.Update
        intCount = intCount + 1
      End If
  Next

'  Display the number of files uploaded
'  ************************************
  Response.Write(intCount & " file(s) uploaded.<BR>")

'  Destruction
'  ***********
  oRs.Close
  oConn.Close
  Set oRs = Nothing
  Set oConn = Nothing
%>
</BODY>
</HTML>
Avatar billede ger2001 Novice
08. april 2005 - 09:58 #14
linie 52: file.FileToField oRs.Fields("idnummer")
Avatar billede busschou Praktikant
08. april 2005 - 10:00 #15
er det ikke fordi den forsøger at gemme selve filen i databasen med den kommando?
For det er jo først i linjen efter at den indsætter filnavnet i databasen
Avatar billede ger2001 Novice
08. april 2005 - 10:03 #16
Hvordan foreslår du vi løser det problem?
Avatar billede busschou Praktikant
08. april 2005 - 10:04 #17
jamen du er interesseret i at få url på filen ind i databasen samt filnavnet`?
Avatar billede ger2001 Novice
08. april 2005 - 10:05 #18
nej kun url'en hvis det er muligt
Avatar billede busschou Praktikant
08. april 2005 - 10:05 #19
for så forstår jeg ikke hvorfor du ikke bruger den anden version?
Avatar billede ger2001 Novice
08. april 2005 - 10:05 #20
1.kopiere fil til mappe
2.lægge url til fil i database
Avatar billede busschou Praktikant
08. april 2005 - 10:06 #21
det du skrev 08:36:09 burde kunne gøre det?
Avatar billede ger2001 Novice
08. april 2005 - 10:06 #22
sample2? prøve lige lidt..
Avatar billede busschou Praktikant
08. april 2005 - 10:07 #23
denne her gemmer jo filen i mappen
file.SaveAs("c:\wwwroot\inetpub\filer\" & file.FileName)
og denne her gemmer url i din tabel
Conn.execute("Insert Into filer (url) Values (c:\wwwroot\inetpub\filer\" & file.FileName)
Avatar billede ger2001 Novice
08. april 2005 - 10:19 #24
men bliver ved med at få denne fejlemeddelelse selv om jeg gør som 08:36:09. Kan du ikke lige sige hvordan du ville angive rettighederne til mappen.

aspSmartUpload.File (0x80040460)
Unable to save file (Error 1120)
/Sample2.asp, line 15
Avatar billede ger2001 Novice
08. april 2005 - 10:21 #25
skiftede mappe c:\1\
nu denne
Der er en syntaksfejl, fordi der mangler en operator. i forespørgselsudtrykket "\filer16-02-05_25.JPG')".
/Sample2.asp, line 16
Avatar billede busschou Praktikant
08. april 2005 - 10:22 #26
jeg har desværre ikke spor forstand på servere og sådan noget.
Men hvis den ikke kan gemme den må det næsten være derfor
Der må være et og andet sted du kan angive fulde rettighedder
Avatar billede ger2001 Novice
08. april 2005 - 10:30 #27
Hvad betyder dette
Der er en syntaksfejl, fordi der mangler en operator. i forespørgselsudtrykket "\filer16-02-05_25.JPG')".
Avatar billede busschou Praktikant
08. april 2005 - 10:50 #28
Conn.execute("Insert Into filer (filnavn) Values (\filer" & file.FileName &"')")
skal vist være
Conn.execute("Insert Into filer (filnavn) Values ('\filer" & file.FileName &"')")
Avatar billede ger2001 Novice
08. april 2005 - 10:54 #29
Yes nu virker det. smid et svar.........
Avatar billede busschou Praktikant
08. april 2005 - 11:02 #30
kanon :o)
Avatar billede ger2001 Novice
08. april 2005 - 11:08 #31
mange tak for kampen. Du var en stor hjælp.........
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