Avatar billede marie14 Nybegynder
07. marts 2006 - 10:59 Der er 27 kommentarer og
1 løsning

aspSmartUpload/stivej til access

Jeg har brugt aspSmartUpload til, at uploade billedfiler. Den uploader også billedfilerne til mappen på serveren og henter tekstfelterne ind i access databasen, men den skriver ikke billedfilnavnet i databasen. Hvordan får jeg den til det?
Avatar billede sneakraid Nybegynder
07. marts 2006 - 21:43 #1
Her er et kode eksempel på hvordan man uploader billeder og samtidig gemmer fil-navnet i en access database. Håber du kan bruge det til noget.

<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("\scripts\aspSmartUpload\Sample.mdb")
  oConn.Open "DBQ="& curDir &";Driver={Microsoft Access Driver (*.mdb)};DriverId=25;FIL=MS Access;"

'  Open a recordset
'  ****************
  strSQL = "SELECT FILENAME,FILE FROM TFILES"

  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("FILE")
        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 marie14 Nybegynder
08. marts 2006 - 07:44 #2
Den kode du giver mig her er kopieret fra aspSmartUpload, ikke?
Problemet er, at deres eksempel ikke også henter tekstfelter og, at de er flere billedfiler og så er det, at man liiiige skal være tilstrækkelig god til, at man selv kan omforme koden. Og det kan jeg ikke!
Avatar billede sneakraid Nybegynder
08. marts 2006 - 08:01 #3
Jeg tror ikke helt jeg forstår hvad du mener med at hente tekstfelter. Kan du evt. give et eksempel på din kode og forklare lidt bedre hvad du mener med tekstfelterne, så skal jeg prøve at se om jeg kan hjælpe =)
Avatar billede marie14 Nybegynder
08. marts 2006 - 08:11 #4
Her er koden. Den skriver teksten i databasen, som den skal og uploader billedet til mappen, men den skriver ikke navnet på billedfilen i databasen.
<%
Set Conn = Server.CreateObject("ADODB.Connection")
DSN = "DRIVER={Microsoft Access Driver (*.mdb)}; "
DSN = DSN & "DBQ=" & Server.MapPath("database.mdb")
Conn.Open DSN
  Dim mySmartUpload
  Dim intCount
       
  Set mySmartUpload = Server.CreateObject("aspSmartUpload.SmartUpload")

  mySmartUpload.CodePage = "utf-8"
  mySmartUpload.Upload
 
  Response.Write "Text : "
  Response.Write mySmartUpload.Form("Image").values & "<br>" 
 
  Response.Write "File : "
  Response.Write mySmartUpload.Files("FILE1").Filename & "<br>"
  intCount = mySmartUpload.Save("upload")



strSQL = "Insert into personer (Country,Name,Description,Password,Email,Image) values('" & mySmartUpload.Form("Country") & "','" & mySmartUpload.Form("Name") & "','" & mySmartUpload.Form("Description") & "','" & mySmartUpload.Form("Password") & "','" & mySmartUpload.Form("Email") & "','" & mySmartUpload.Form("Image") & "')"


Conn.Execute(strSQL)


Conn.Close
Set Conn = Nothing

%>
Avatar billede sneakraid Nybegynder
08. marts 2006 - 10:04 #5
Kan jeg evt. få lov til at se koden hvor du uploader billedet til mappen?

Men du kan prøve med følgende sql sætning:

strSQL = "Insert into personer (Country,Name,Description,Password,Email,Image) values('" & mySmartUpload.Form("Country") & "','" & mySmartUpload.Form("Name").Filename & "','" & mySmartUpload.Form("Description") & "','" & mySmartUpload.Form("Password") & "','" & mySmartUpload.Form("Email") & "','" & mySmartUpload.Form("Image") & "')"
Avatar billede marie14 Nybegynder
08. marts 2006 - 11:29 #6
Dette er koden der uploader til mappen:
  Dim mySmartUpload
  Dim intCount
       
  Set mySmartUpload = Server.CreateObject("aspSmartUpload.SmartUpload")


  mySmartUpload.CodePage = "utf-8"
  mySmartUpload.Upload
 

  intCount = mySmartUpload.Save("upload")
Avatar billede eagleeye Praktikant
15. marts 2006 - 08:27 #7
Efter du har kaldt mySmartUpload.Save("upload") kan du hente filens navne sådan her:

intCount = mySmartUpload.Save("upload")

if intCount > 0 then
  filnavn = MyUpLoad.Files.Item(1).Name
end if


Så bruge filnavn i din SQL sætning. Der er også et par reserverede ord i din SQL sætning som der skal klammer omkring eks, [password]:

strSQL = "Insert into personer (Country,[Name],[Description],[Password],Email,Image) values('" & mySmartUpload.Form("Country") & "','" & mySmartUpload.Form("Name") & "','" & mySmartUpload.Form("Description") & "','" & mySmartUpload.Form("Password") & "','" & mySmartUpload.Form("Email") & "','" & mySmartUpload.Form("Image") & "')"
Avatar billede eagleeye Praktikant
15. marts 2006 - 08:28 #8
hhmm fik ikke rettet SQL'en helt..:

strSQL = "Insert into personer (Country,[Name],[Description],[Password],Email,Image) values('" & mySmartUpload.Form("Country") & "','" & mySmartUpload.Form("Name") & "','" & mySmartUpload.Form("Description") & "','" & mySmartUpload.Form("Password") & "','" & mySmartUpload.Form("Email") & "','" & filnavn & "')"
Avatar billede marie14 Nybegynder
15. marts 2006 - 09:10 #9
Hej eagleeye
Jeg er meget glad for, at du gider, at hjælpe.
Jeg har prøvet din kode, men den kommer med denne fejlmelding:

Error 500:100 :

ASP Code 0
Number -2146827864
Source -
File /indsaet.asp
Line 52
Column -1
Description Object required: ""
ASP Description -
SQL Query -
Avatar billede marie14 Nybegynder
15. marts 2006 - 09:13 #10
Jeg vil gerne have, at den sætter filnavnet i databasen, uden at folk skal indtaste filnavnet i et tekstfelt.
Avatar billede eagleeye Praktikant
15. marts 2006 - 16:31 #11
Hvordan ser linie 52 ud i indsaet.asp filen?
Avatar billede marie14 Nybegynder
16. marts 2006 - 08:53 #12
Den ser sådan ud:

filnavn = MyUpLoad.Files.Item(1).Name
Avatar billede eagleeye Praktikant
16. marts 2006 - 17:20 #13
Arh jeg har skrvet forkert navn på objectet prøv at rette den linie:

filnavn = MyUpLoad.Files.Item(1).Name

Til dette:

filnavn = mySmartUpload.Files.Item(1).Name
Avatar billede marie14 Nybegynder
20. marts 2006 - 10:31 #14
Jeg kan godt se fejlen. Jeg har rettet den og testet det igennem. Den skriver nu til databasen, men hvor den skulle skrive billedfilnavnet, skriver den navnet på selve FileField feltet. Håber du forstår hvad jeg mener. :-)
Avatar billede eagleeye Praktikant
20. marts 2006 - 19:26 #15
arh du har ret .Name er navnet fra input feltet. Det skal være .FileName jeg har vist kigget forkert da jeg skrev det :)  Så prøv sådan her:

filnavn = mySmartUpload.Files.Item(1).FileName



Link til file objeket:
http://www.aspsmart.com/aspSmartUpload/liblocal/docs/Objects.htm#file
Avatar billede marie14 Nybegynder
21. marts 2006 - 08:37 #16
Nu virker det bare!!! Fedt!!! :-)
Tusind tak.
Et lille spørgsmål....
Er det rigtigt, at man ikke kan få en upload til, at virke, på en side hvor formularen sender oplysningerne tilbage den samme side? (Håber du forstår hvad jeg mener)
Avatar billede sneakraid Nybegynder
21. marts 2006 - 09:25 #17
Jo det kan du sagtens. Du sender, som du sagde, bare til den samme side og skriver noget lign. det her:

<%
If Request.Form <> "" Then
    'Skriv din upload funktion her + skriv til db
End If
%>
//Her skriver du din upload formular
<form id="...></form>
Avatar billede eagleeye Praktikant
21. marts 2006 - 09:42 #18
De fleste eksempler viser at man skal bruge 2 filer, men det er ikke nødvendigt du kan godt havde koden og formen i samme fil hvis det er det nu mener?

Jeg ville tjekke på om method er lig med post sådan her:

<%
If Request.Servervariables("REQUEST_METHOD") = "POST" Then
    'koden som gemmer filen+form data

End If
%>
<html>
.. html koden her med form'en
<form action="<%=Request.Servervariables("Script_Name")%>" method="post"  ENCTYPE="multipart/form-data">
.. form felterne
</form>
Avatar billede sneakraid Nybegynder
21. marts 2006 - 09:50 #19
eagleeye > det du gør med Request.ServerVariables, er det ligesom at tjecke for postback i ASP.NET ? :) I stedet for min metode, hvor jeg bare tjecker på om der er noget i form'en.
Avatar billede marie14 Nybegynder
21. marts 2006 - 09:55 #20
Ja, det er det jeg mener, om jeg kan have formen m. upload image og koden på samme side.
Jeg er med på denne kodelinje:
<form action="<%=Request.Servervariables("Script_Name")%>" method="post"  ENCTYPE="multipart/form-data">

Men hvor forventer du denne skal stå?:
<%
If Request.Servervariables("REQUEST_METHOD") = "POST" Then
    'koden som gemmer filen+form data

End If
%>
Avatar billede eagleeye Praktikant
21. marts 2006 - 09:55 #21
Jeg kender ikke helt ASP.NET men den tjekker om siden er kaldt med "POST" eller "GET" metoden.
Avatar billede eagleeye Praktikant
21. marts 2006 - 10:00 #22
Jeg ligger det normalt øverst i filen:

<% 'start på filen %>
<%
'ASP koden som behandler data fra formen
If Request.Servervariables("REQUEST_METHOD") = "POST" Then
    'koden som gemmer filen+form data

End If
'Slut på ASP koden efter dette vise form'en
%>
<!-- HTML kode -->
<form .....>

</body>
</html>





og du har ASP efter <html><body> tags eller helt i toppen afhænger lidt af om du også øsnker at uskrive tekst når filen upload. Hvis man øsker at udskrive tekst kan at filen er uploadet kan det være man ønsker at benytte en bestetm style som er hentes via stylesheet eller man kun øsnker at vise form'en hvis der ikke er uploaded en fil:

<% 'start på filen %>
<html>
<head></head>
<body>
<%
'ASP koden som behandler data fra formen
If Request.Servervariables("REQUEST_METHOD") = "POST" Then
  'koden som gemmer filen+form data


  Response.Write "tak fordi du uploaded en fil."
Else
%>
<form .....>

</form>
<% 'End if så forn ikke vises når filen er uploadet.
End If  %>
</body>
</html>
Avatar billede marie14 Nybegynder
21. marts 2006 - 10:39 #23
Puhaa...jeg begynder, at svede. :-)
Jeg skal lige afprøve det. Håber jeg må vende tilbage, hvis jeg bliver kvalt i koderne?
Avatar billede marie14 Nybegynder
29. marts 2006 - 10:14 #24
Hej igen eagleeye :-)
Vil du kigge på de koder jeg har?
Jeg kan simpelthen ikke få det til, at virke selv.
Jeg vil gerne give 200 point for det, eller mere hvis jeg kunne.
Avatar billede eagleeye Praktikant
29. marts 2006 - 16:51 #25
Ja det kan jeg godt prøve at kigge på.
Avatar billede marie14 Nybegynder
30. marts 2006 - 08:45 #26
Tak for det. :-)
Skal jeg oprette det som et nyt spørgsmål?
Avatar billede eagleeye Praktikant
30. marts 2006 - 17:58 #27
Ja hvis du vil give 200 point er det nok bedst at oprette et nyt ;)
men eller kan du jo altid give lidt ekstra point i et "point til eagleyee" bare det tilsamme ikke giver mere end 200 point.
Avatar billede marie14 Nybegynder
31. marts 2006 - 10:34 #28
Jeg har kaldt det nye spørgsmål for:

aspSmartUpload problem
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