webForumDet fria alternativet
Logga in / Bli medlem

Upload

ASP

48 svar · 682 visningar · startad av aleborg · sida 2 av 3

Trådstarten, av aleborg

Jag har installerat komponenten aspSmartUpload från <http://www.aspsmart.com> Jag har en Form som ska ladda upp filer till en katalog och samtidigt lägga in text i en databas. Hur ska sidan som tar emot se ut? Och hur gör jag för att spara namnen på filerna som laddas upp i databasen? motagarsidan ser ut så här idag: <% dim Conn set rs= Server.CreateObject("ADODB.Recordset") SQL= "SELECT

Läs hela trådstarten →
Medlem sedan jan. 20013 341 inlägg
#21

Försökte uppdatera db:n så här men får inget i db:n

conn.Execute= "UPDATE Produkter SET Paradbild = '" & mySmartUpload.Form("Paradbild").filename & "', Fotografi = '" & mySmartUpload.Form("Fotografi").filename & "', Fotografi1 = '" & mySmartUpload.Form("Fotografi1").filename & "', Fotografi2 = '" & mySmartUpload.Form("Fotografi2").filename & "', Pdffil = '" & mySmartUpload.Form("Pdffil").filename & "' Where ID ="& Request.QueryString("ID") &""

Någon som vet hur koden ska se ut för att kunna UPDATERA databasen med dom nya namnen från dom nyupladdade filerna?

Medlem sedan juni 200032 967 inlägg
#22

prova:

conn.Execute ("UPDATE Produkter SET Paradbild = '" & mySmartUpload.Form("Paradbild").filename & "', Fotografi = '" & mySmartUpload.Form("Fotografi").filename & "', Fotografi1 = '" & mySmartUpload.Form("Fotografi1").filename & "', Fotografi2 = '" & mySmartUpload.Form("Fotografi2").filename & "', Pdffil = '" & mySmartUpload.Form("Pdffil").filename & "' Where ID ="& Request.QueryString("ID"))

ange också gärna alltid om du får felmeddelande och i så fall vilket.

Medlem sedan jan. 20013 341 inlägg
#23

Error Type:
Microsoft VBScript runtime (0x800A01B6)
Object doesn't support this property or method: 'filename'
/unisafe/admin/nyprodpic2.asp, line 37

fick jag nu!

Orginal koden för att lägga till en post och ladda upp filer ser ut så här:

<%
dim Conn
set rs= Server.CreateObject("ADODB.Recordset")
SQL= "SELECT * FROM Produkter WHERE 1=2"
rs.Open SQL,Conn,1,2
rs.AddNew
For each file In mySmartUpload.Files
rs(file.name)=file.filename
next
rs("Produktnamn")=mySmartUpload.Form("rubr")
rs("Paradtext")=mySmartUpload.Form("paradtext")
rs("Paradbild")=mySmartUpload.Files(1).Filename
rs("Beskr")=mySmartUpload.Form("beskr")
rs("Beskr2")=mySmartUpload.Form("beskr2")
rs("Beskr3")=mySmartUpload.Form("beskr3")
rs("Pris")=mySmartUpload.Form("pris")
rs("Hojd")=mySmartUpload.Form("hojd")
rs("Bredd")=mySmartUpload.Form("bredd")
rs("Djup")=mySmartUpload.Form("djup")
rs("Artnr")=mySmartUpload.Form("artnr")
rs("Fotografi")=mySmartUpload.Files(2).Filename
rs("Fotografi1")=mySmartUpload.Files(3).Filename
rs("Fotografi2")=mySmartUpload.Files(4).Filename
rs("Ssfintyg")=mySmartUpload.Form("ssf")
rs("KategID")=mySmartUpload.Form("kategid")
rs("Pdffil")=mySmartUpload.Files(5).Filename
rs.Update
%>

men nu så ska jag ladda upp nya filer och uppdatera filnamnen!

Medlem sedan juni 200032 967 inlägg
#24

hörrudu, filename är en property som tillhör files.

mySmartUpload.Form("Fotografi2").filename kommer aldrig att fungera.

så här används filename (klippt från din kod, ju): mySmartUpload.Files(2).Filename

mvh,

Medlem sedan jan. 20013 341 inlägg
#25

Ahhh, det har du rätt i!

Men ett annat problem dyker då upp!
För att man inte ska behöva ladda upp alla filer så ska man få in:

For each file In mySmartUpload.Files
rs(file.name)=file.filename
next

men då får jag på mittenraden felet
Error Type:
ADODB.Recordset (0x800A0CC1)
Objektet kunde inte hittas i mängden med det begärda namnet eller numret.

vad missar jag?

<%
dim Conn
set rs= Server.CreateObject("ADODB.Recordset")
For each file In mySmartUpload.Files
rs(file.name)=file.filename
next
conn.Execute ("UPDATE Produkter SET Paradbild = '" & mySmartUpload.Files(1).Filename & "', Fotografi = '" & mySmartUpload.Files(2).Filename & "', Fotografi1 = '" & mySmartUpload.Files(3).Filename & "', Fotografi2 = '" & mySmartUpload.Files(4).Filename & "', Pdffil = '" & mySmartUpload.Files(5).Filename & "' Where ID ="& Request.QueryString("ID"))
%>
Medlem sedan juni 200032 967 inlägg
#26

For each file In mySmartUpload.Files
rs(file.name)=file.filename
next

så som du skrivit den koden så försöker du stoppa in "bang.gif" i fältet [bang.gif] i tabellen. eller minfil.pdf i [minfil.pdf]. den kommer alltid att försöka stoppa in i ett fält med samma namn som filen.

det som är det största problemet med aspsmartupload, är att det inte är helt enkelt att knyta en viss fil till en viss data när man som du laddar upp flera filer på samma gång.

jag har gjort det enkelt för mig, jag har två filer som laddas upp samtidigt, men de är av olika typ (en .jpg/gif och en .pdf), så jag vet alltid vilka fält som tillhör vilken fil.

vad är det du försöker göra med just denna raden:

rs(file.name)=file.filename

??? förklara gärna på ren svenska.

mvh,

Medlem sedan jan. 20013 341 inlägg
#27

Det var emission som skrev :)
Fråga honom :)
Det funkar i allafall, rätt fil till rätt plats och man behöver inte ladda upp alla filerna!

Medlem sedan juni 200032 967 inlägg
#28

okaj, har jag fel, månne?
ja, det är möjligt att jag har...

hmm.. ja bortse från mitt inlägg ovan.. :e

jag tror jag snurrar bort mig själv här, samtidigt som jag är tarvlig mot dig. sorry.

jag kanske återkommer under eftermiddagen.

redigering: vad heter dina fält i tabellen förresten, som filnamnen ska in i?

mvh,

Medlem sedan jan. 20013 341 inlägg
#29

Paradbild
Fotografi
Fotografi1
Fotografi2
Fotografi3
Pdffil

Medlem sedan jan. 20013 341 inlägg
#30

;)

Medlem sedan juni 200032 967 inlägg
#31

det är klart att det där funkar! :e

om du ändrar till:

For each file In mySmartUpload.Files
[b]response.write file.name & "<br>"[/b]
rs(file.name)=file.filename
next

så borde den ju skriva ut även den som inte funkar, så vi åtminstone får se vilken det är...

Medlem sedan dec. 19996 721 inlägg
#32

Du behöver inte både

For each file In mySmartUpload.Files
rs(file.name)=file.filename
next

och

rs("Paradbild")=mySmartUpload.Files(1).Filename
rs("Fotografi")=mySmartUpload.Files(2).Filename
rs("Fotografi1")=mySmartUpload.Files(3).Filename
rs("Fotografi2")=mySmartUpload.Files(4).Filename
rs("Pdffil")=mySmartUpload.Files(5).Filename

Den översta ersätter den andra.

Om man uppdaterar och inte lägger in en av filerna, vil du då att det filnamn som ligger i databasen ska ligga kvar, eller ska det tas bort?

Medlem sedan jan. 20013 341 inlägg
#33

Det ska ligga kvar!

Så här ser det ut nu:

<%
dim Conn
set rs= Server.CreateObject("ADODB.Recordset")
For each file In mySmartUpload.Files
rs(file.name)=file.filename
next
conn.Execute ("UPDATE Produkter SET Paradbild = '" & mySmartUpload.Files(1).Filename & "', Fotografi = '" & mySmartUpload.Files(2).Filename & "', Fotografi1 = '" & mySmartUpload.Files(3).Filename & "', Fotografi2 = '" & mySmartUpload.Files(4).Filename & "', Pdffil = '" & mySmartUpload.Files(5).Filename & "' Where ID ="& Request.QueryString("ID"))
%>

Då får jag fel i
rs(file.name)=file.filename
Använder jag inte for satsen så tas allt annat bort om jag bara laddar upp en fil!

Medlem sedan dec. 19996 721 inlägg
#34

Då måste du bygga UPDATE:n dynamiskt.

For each file In mySmartUpload.Files
strSQL=strSQL & "[" & file.name & "]='" & file.filename & "',"
next
strSQL=left(strSQL,len(strSQL)-1)

conn.Execute ("UPDATE Produkter SET " & strSQL & " Where ID =" & Request.QueryString("ID"))
Medlem sedan jan. 20013 341 inlägg
#35

Får fortfarande inte behålla dom fält som inte ska ändras :(

Medlem sedan dec. 19996 721 inlägg
#36

Jag får nog ta och prova aspsmartupload innan jag skriver mer.

Medlem sedan jan. 20013 341 inlägg
#37

Kom du på det?
Har suttit o provat fram och tillbaka med alla sorters kombinationer men namnen bara skrivs över om man inte laddar upp nått! :(

Medlem sedan dec. 19996 721 inlägg
#38

För att göra det enkelt får du helt enkelt kolla om du får något namn

For each file In mySmartUpload.Files
if len(file.filename)>0 then strSQL=strSQL & "[" & file.name & "]='" & file.filename & "',"
next

Medlem sedan jan. 20013 341 inlägg
#39

Tack, det funkade :) *hoppar av lycka* :e

Medlem sedan jan. 20013 341 inlägg
#40

Det gjorde det inte alls :(
Får inte behålla gamla filnamnet om man inte laddar upp igen:(

          <%
dim Conn
set rs= Server.CreateObject("ADODB.Recordset")
For each file In mySmartUpload.Files
if len(file.filename)>0 then strSQL=strSQL & "[" & file.name & "]='" & file.filename & "',"
next
Conn.Execute("UPDATE Kateg SET [Kategrubr] = '" & mySmartUpload.Form("Kategrubr") & "', [EngKategrubr] = '" & mySmartUpload.Form("EngKategrubr") & "', [Kategbild] = '" & mySmartUpload.Files(1).Filename & "' WHERE [KategID] = " & Request.QueryString("KategID") & " ")
%>
256 ms totalt · 4 externa anrop · v20260731065814-full.51f67c91
125 ms — deklarationer (db)
0 ms — hämta statistik (cache)
128 ms — hämta tråd, inlägg och bilagor (db)
123 ms — ändringar (db)