Avatar billede riishoj Nybegynder
03. juli 2002 - 11:47 Der er 24 kommentarer og
1 løsning

Link i db til billeder

Jeg vil gerne kunne uploade billeder til en database, men alle de kloge hoveder siger, at det er en dårlig ide at have billederne liggende i db'en. Derimod er løsningen at lave et link i db'en til billedene, som så skal ligge i en mappe på serveren. Det lyder altsammen meget fornuftigt, men hvordan laver man det? Jeg har en upload komponent på min server, så jeg kan få puttet billederne i en mappe, men hvordan får man samtidig sendt et link til databasen, som refererer til billedet i mappen? Databasen ligger ikke på samme server som mappen til billederne. Er det et problem?
Avatar billede riishoj Nybegynder
03. juli 2002 - 14:13 #1
Har jeg formuleret mig uklart? Det kan ikke passe at ingen kender løsningen på mit lille problem. Jeg har set det foreslået flere steder, bare ikke hvordan.
Avatar billede Slettet bruger
03. juli 2002 - 14:16 #2
Kom med det script du bruger til at uploade...
Avatar billede riishoj Nybegynder
03. juli 2002 - 15:26 #3
ok, her kommer det

<%

Response.Expires = 0

Set fbase = Server.CreateObject("Chili.Upload.1")

fbase.SizeLimit = 10000

fbase.SaveToFile("/opt/datafiles/test.dat")

%>

Done writing <%=fbase.FileSize%> bytes from user file <%=fbase.SourceFileName%> (of type <%=fbase.SourceFileExtension%>)
Avatar billede riishoj Nybegynder
03. juli 2002 - 18:15 #4
nowoe> Hjalp det ikke at se mit script?
Er der andre, som kan hjælpe?
Avatar billede yellow Nybegynder
03. juli 2002 - 18:29 #5
Jeg har lidt svært ved at se hvad dit problem er...
Jeg går ud fra at du i din asp side allerede har oprettet connection og command objecter til databasen.
Ligeledes har du også oprettet en passende tabel i databasen til at indeholde dine fil-stier

Set fbase = Server.CreateObject("Chili.Upload.1")
fbase.SizeLimit = 10000

FILSTI = Server.mapPath("/") & "/" & "test.dat"

fbase.SaveToFile( FILSTI )

cnn.execute("INSERT INTO FilStiTabel (filstier) VALUES (" & FILSTI & ")")

hvor cnn er dit connection object til databasen.
Avatar billede riishoj Nybegynder
03. juli 2002 - 18:55 #6
Mit problem er blandt andet at min database ligger på en anden server end mit website og er forbundet med dette med en DSN forbindelse.
Det eneste jeg har er ovennævnte script som uploader filer til en mappe på serveren.
Avatar billede yellow Nybegynder
03. juli 2002 - 19:08 #7
Når du laver en forbindelse til database fra asp, gør du normalt noget lignende det her:
Dim objConn
Set objConn = Server.CreateObject("ADODB.Connection")
objConn.ConnectionString = **********************
objConn.Open

Stjernerne ovenfor skal så erstattes med en connectionstring hvor du bla. angiver hvilken database driver, database og server du vil forbinde til.
Mere hjælp til at lave din connectionstring kan findes her: http://www.connectionstrings.com/
Avatar billede riishoj Nybegynder
03. juli 2002 - 20:02 #8
Jeg tror jeg er ved at fatte en smule. Jeg har check på, hvordan jeg laver databaseforbindelsen. Hvad skal der stå i parantesen (filstier).

Hvis det nu lykkes at få db'en til at virke, hvordan henter jeg så billederne igen.
Avatar billede yellow Nybegynder
03. juli 2002 - 20:18 #9
Feltnavnet i en tabel i databasen hvor du vil gemme linket
Avatar billede riishoj Nybegynder
03. juli 2002 - 21:49 #10
Mit script ser nu sådan ud. Desværre skriver det intet til databasen!

<%


Response.Expires = 0

Set fbase = Server.CreateObject("Chili.Upload.1")

fbase.SizeLimit = 100000



FILSTI = Server.mapPath("/") & "/" & "test.dat"

fbase.SaveToFile( FILSTI )

' Databaseforbindelse
ConnString = "DSN=riishojwebsoftdkdsn"
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open ConnString



strSQL ="INSERT INTO biler (Filstier) VALUES (" & FILSTI & ")"
conn.execute(strSQL)

' Rydder op efter os
Conn.Close
Set Conn = Nothing

%>

Done writing <%=fbase.FileSize%> bytes from user file <%=fbase.SourceFileName%> (of type <%=fbase.SourceFileExtension%>)
Avatar billede yellow Nybegynder
03. juli 2002 - 21:57 #11
Giver den ingen fejlbesked?

prøv at lave en
response.write strSQL
lige efter du har sat en værdi i den, hvad står der?
Avatar billede riishoj Nybegynder
03. juli 2002 - 22:11 #12
Nej, jeg får ingen fejlmeddelelse. Hvor skal jeg indsætte

response.write strSQL
Avatar billede yellow Nybegynder
03. juli 2002 - 22:35 #13
lige efter
strSQL ="INSERT INTO biler (Filstier) VALUES (" & FILSTI & ")"
conn.execute(strSQL)
Avatar billede riishoj Nybegynder
03. juli 2002 - 22:54 #14
Det eneste den skriver er

Du har succesfuldt uploadet pic3.jpg
Avatar billede riishoj Nybegynder
03. juli 2002 - 23:41 #15
Sorry. Jeg har brugt det forkerte script. Her er det rigtige. Hvordan laver jeg det om, så jeg også får uploadet et link til databasen?
Avatar billede riishoj Nybegynder
03. juli 2002 - 23:41 #16
<html>
    <body bgcolor="#ffffff">
        <p>
<%
Response.Expires = 0

Set fbase = Server.CreateObject("Chili.Upload.1")
dim strSentence, arrWords, strOneWord, element
strSentence = fbase.SourceFileName
strSentence = Trim(strSentence)
arrWords = Split (strSentence, "\", -1, 1)
element = UBound(arrWords)
' Response.Write("Element = ")
' Response.Write(element)
Response.Write("<BR> Du har succesfuldt uploadet ")
Response.Write(arrWords(element))
Response.Write("<BR>")

fbase.SizeLimit = 100000

fbase.SaveToFile ("/home/sites/site122/web/upload/filer/" & arrWords(element))
%>

        </p>
    </body>

</html>
Avatar billede yellow Nybegynder
04. juli 2002 - 00:35 #17
Samme som tidligere bare med en anden FILSTI
FILSTI = Server.mapPath("/") & "/" & arrWords(element)
Avatar billede riishoj Nybegynder
04. juli 2002 - 13:49 #18
Får en fejl som siger

Chili.Upload.1 error '80020009'

Cannot access file outside of application root.

/upload/upload.asp, line 37
Avatar billede yellow Nybegynder
04. juli 2002 - 14:05 #19
hvad står der i linie 37?

fbase.SaveToFile ("/home/sites/site122/web/upload/filer/" & arrWords(element))??
Avatar billede riishoj Nybegynder
04. juli 2002 - 15:59 #20
Ja, linie 37 er ganske rigtig det du skriver. Her er hele scriptet.

<%
Response.Expires = 0

' Databaseforbindelse
ConnString = "DSN=riishojwebsoftdkdsn"
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open ConnString



Set fbase = Server.CreateObject("Chili.Upload.1")
dim strSentence, arrWords, strOneWord, element
strSentence = fbase.SourceFileName
strSentence = Trim(strSentence)
arrWords = Split (strSentence, "\", -1, 1)
element = UBound(arrWords)
' Response.Write("Element = ")
' Response.Write(element)
Response.Write("<BR> Du har succesfuldt uploadet ")
Response.Write(arrWords(element))
Response.Write("<BR>")

fbase.SizeLimit = 100000
FILSTI = ("home/sites/site122/web/upload/filer/" & arrWords(element))
fbase.SaveToFile ("home/sites/site122/web/upload/filer/" & arrWords(element))


strSQL ="INSERT INTO biler (Filstier) VALUES (" & FILSTI & ")"
conn.execute(strSQL)
response.write strSQL

' Rydder op efter os
Conn.Close
Set Conn = Nothing

%>
Avatar billede riishoj Nybegynder
04. juli 2002 - 16:38 #21
Så har jeg fået det til at virke! Jeg havde glemt at sætte / foran home i
fbase.SaveToFile ("home/sites/site122/web/upload/filer/" & arrWords(element))

Desuden skal

strSQL ="INSERT INTO biler (Filstier) VALUES (" & FILSTI & ")"
laves om til

strSQL ="INSERT INTO biler (Filstier) VALUES ('" & FILSTI & "')"

Hvad nu? Hvordan henter jeg billedet via linket i databasen. Den sti som bliver skrevet i db er jo en relativ sti.
Avatar billede yellow Nybegynder
04. juli 2002 - 21:11 #22
Hmm, måske skulle du bare sætte
strSQL ="INSERT INTO biler (Filstier) VALUES ('" & arrWords(element) & "')"

..ind i DBen, så står der bare filnavnet.
Du ved jo allerede at den ligger i /home/sites/site122/web/upload/filer/
Avatar billede riishoj Nybegynder
04. juli 2002 - 22:39 #23
OK, kan du ikke lige sende et svar, da du jo har besvaret og løst mit problem. Jeg vil da gerne af med nogle point.
Avatar billede yellow Nybegynder
05. juli 2002 - 09:38 #24
takker :)
Avatar billede riishoj Nybegynder
05. juli 2002 - 09:53 #25
Selv tak. Det du har hjulpet med er en del af et større projekt, som jeg forsøger at få til at hænge sammen, så det kan være, at du kan hjælpe med det, men det vil jeg oprette som et nyt spørgsmål.
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