webForumDet fria alternativet

Upload

48 svar · 682 visningar · startad av aleborg

aleborgMedlem sedan jan. 20013 341 inlägg
#1

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 * FROM Produkter WHERE 1=2"
rs.Open SQL,Conn,1,2
rs.AddNew
rs("Produktnamn")=Request.Form("rubr")
rs("Paradtext")=Request.Form("paradtext")
rs("Paradbild")=Request.Form("FILE1")
rs("Beskr")=Request.Form("beskr")
rs("Beskr2")=Request.Form("beskr2")
rs("Beskr3")=Request.Form("beskr3")
rs("Pris")=Request.Form("pris")
rs("Hojd")=Request.Form("hojd")
rs("Bredd")=Request.Form("bredd")
rs("Djup")=Request.Form("djup")
rs("Artnr")=Request.Form("artnr")
rs("Fotografi")=Request.Form("FILE2")
rs("Fotografi1")=Request.Form("FILE3")
rs("Fotografi2")=Request.Form("FILE4")
rs("Ssfintyg")=Request.Form("ssf")
rs("KategID")=Request.Form("kategid")
rs("Pdffil")=Request.Form("FILE5")
rs.Update
%>

Datan som ska ta emot filerna(FILE1, FILE2, FILE3, FILE4, FILE5) ska se ut så här:

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

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

'  Save the files with their original names in a virtual path of the web server
'  ****************************************************************************
   intCount = mySmartUpload.Save("../picup")
   ' sample with a physical path 
   ' intCount = mySmartUpload.Save("c:\temp\")

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

Hur kombinerar jag dom?

@ndersMedlem sedan juni 200032 969 inlägg
#2

egentligen lite precis som du vill, den ena ovanför den andra eller tvärsom. kom ihåg två saker dock: skapa objektet mySmartUpload överst på sidan och använd istället för request.form:

mySmartUpload.Form("rubr")

fattaru?

mvh,

------------------
<A HREF="http://cartman.nu" TARGET=_blank>
if i'm not back in five minutes, just wait longer.</A>

aleborgMedlem sedan jan. 20013 341 inlägg
#3

Japp, det gör jag men hur gör jag för att spara filnamnet i databasen?

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

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

'  Save the files with their original names in a virtual path of the web server
'  ****************************************************************************
   intCount = mySmartUpload.Save("../picup")
   ' sample with a physical path 
   ' intCount = mySmartUpload.Save("c:\temp\")

'  Display the number of files uploaded
'  ************************************
   Response.Write(intCount & " file(s) uploaded.")
%>          
<%
dim Conn
set rs= Server.CreateObject("ADODB.Recordset")
SQL= "SELECT * FROM Produkter WHERE 1=2"
rs.Open SQL,Conn,1,2
rs.AddNew
rs("Produktnamn")=mySmartUpload.Form("rubr")
rs("Paradtext")=mySmartUpload.Form("paradtext")
rs("Paradbild")=mySmartUpload.Form("FILE1")
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.Form("FILE2")
rs("Fotografi1")=mySmartUpload.Form("FILE3")
rs("Fotografi2")=mySmartUpload.Form("FILE4")
rs("Ssfintyg")=mySmartUpload.Form("ssf")
rs("KategID")=mySmartUpload.Form("kategid")
rs("Pdffil")=mySmartUpload.Form("FILE5")
rs.Update
%>
@ndersMedlem sedan juni 200032 969 inlägg
#4

nu var det iofs ett tag sedan jag använde mig av aspsmartupload, men jag har för mig att du bör ha en loop som drar igenom file-collection. du lär också ha en variabel som innehåller filnamnet.

jag har för mig att det fanns med en sample application (asp-fil) som gjorde precis detta :q

lycka till,

------------------
<A HREF="http://cartman.nu" TARGET=_blank>
if i'm not back in five minutes, just wait longer.</A>

aleborgMedlem sedan jan. 20013 341 inlägg
#5

Hittade det här på deras site:

FileName

The FileName property contains the name of the file.

Syntax
.FileName

Return Value
Returns a String value.

Example

<%
Response.Write("FileName=" & MyUpLoad.Files.Item(2).FileName)
%>

Så jag försökte med:

rs("Paradbild")=mySmartUpload.Form("FILE1") = " & MyUpLoad.Files.Item(1).FileName"

Men får bara en nolla i db:n

aleborgMedlem sedan jan. 20013 341 inlägg
#6

Försökte även med

rs("Paradbild")=mySmartUpload.Form("FILE1") = "file.FileName"
@ndersMedlem sedan juni 200032 969 inlägg
#7

humm, det där såg lite knasigt ut.

prova följande:

rs("Paradbild") = MyUpLoad.Files.Item(1).FileName

då råkar inte ha en for-loop för antalet filer som skickas? man kan ju inte vara riktigt säker på vilken fil som kommer med index 1. eller använder du if-satser?

------------------
<A HREF="http://cartman.nu" TARGET=_blank>
if i'm not back in five minutes, just wait longer.</A>

aleborgMedlem sedan jan. 20013 341 inlägg
#8

All "kod" som finns på sidan ser ut så här:


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

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

'  Save the files with their original names in a virtual path of the web server
'  ****************************************************************************
   intCount = mySmartUpload.Save("../picup")
   ' sample with a physical path 
   ' intCount = mySmartUpload.Save("c:\temp\")

'  Display the number of files uploaded
'  ************************************
   Response.Write(intCount & " file(s) uploaded.")
%>          
<%
dim Conn
set rs= Server.CreateObject("ADODB.Recordset")
SQL= "SELECT * FROM Produkter WHERE 1=2"
rs.Open SQL,Conn,1,2
rs.AddNew
rs("Produktnamn")=mySmartUpload.Form("rubr")
rs("Paradtext")=mySmartUpload.Form("paradtext")
rs("Paradbild")=mySmartUpload.Form("FILE1") = "file.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.Form("FILE2") = "file.FileName"
rs("Fotografi1")=mySmartUpload.Form("FILE3") = "file.FileName"
rs("Fotografi2")=mySmartUpload.Form("FILE4") = "file.FileName"
rs("Ssfintyg")=mySmartUpload.Form("ssf")
rs("KategID")=mySmartUpload.Form("kategid")
rs("Pdffil")=mySmartUpload.Form("FILE5")
rs.Update
%>
aleborgMedlem sedan jan. 20013 341 inlägg
#9

Och får fortfarande bara en nolla i db:n!
nån som kan aspSmartUpload?

@ndersMedlem sedan juni 200032 969 inlägg
#10

jag förstår inte alls vad du försöker göra med rader som ser ut så här:

rs("Paradbild")=mySmartUpload.Form("FILE1") = "file.FileName"

kan du förklara det för oss?

------------------
<A HREF="http://cartman.nu" TARGET=_blank>
if i'm not back in five minutes, just wait longer.</A>

aleborgMedlem sedan jan. 20013 341 inlägg
#11

I ett av exemplen så använder dom

oRs("FILENAME") = file.FileName

för att lägga till namnet i databasen,
men det är när dom sparar hela filen i db:n!
Satte det inom " " eftersom jag fick fel utan,
det här är bara ett av dom olika
kombinationer jag provat!

aleborgMedlem sedan jan. 20013 341 inlägg
#12

Ingen som har ett svar på det här???
SNÄLLA!!! :)

emissionMedlem sedan dec. 19996 721 inlägg
#13

Anledningen till att du får 0 med

rs("Fotografi")=mySmartUpload.Form("FILE2") = "file.FileName"

är att det värde som då sparas i rs("Fotografi") är resultatet av den logiska jämförelsen mellan värdet i mySmartUpload.Form("FILE2") och strängen "file.FileName". Eftersom du inte skrivit in orden "file.Filename" i ett formulärfält som heter "FILE2" så blir jämförelsen falsk, och värdet blir 0.

Det blir också fel om du bara skriver file.Filename, för du har inget file-objekt.(Kolla i dokumentationen för aspSmartUpload)

Lösning:

rs("Paradbild")=mySmartUpload.Files(0)
rs("Fotografi")=mySmartUpload.Files(1)
rs("Fotografi1")=mySmartUpload.Files(2)
rs("Fotografi2")=mySmartUpload.Files(3)

aleborgMedlem sedan jan. 20013 341 inlägg
#14

Provade, nu fick jag:

Error Type:
aspSmartUpload.Files (0x800404B5)
Invalid Files Name '0' (Error 1205)

Provade även lägga in For satsen som används i exempel 4, men deras dokumentation är inte den bästa, dom förutsätter att man är proffs, vilket alla inte är!

emissionMedlem sedan dec. 19996 721 inlägg
#15

Ahh...Item-numreringen börjar på 1. Ska alltså vara från 1 till 4, inte 0 till 3

aleborgMedlem sedan jan. 20013 341 inlägg
#16

Error Type:
Provider (0x80020003)
Det gick inte att hitta medlemmen.
/unisafe/admin/nyprodsucc.asp, line 197

Line 197:
rs("Paradbild")=mySmartUpload.Files(1)

Hur ska det se ut med "For" satser mm?

aleborgMedlem sedan jan. 20013 341 inlägg
#17

Enligt dokumentationen ska man använda .FileName för att få fram filnamnet, gäller det bara när man ska få det utskrivet?

emissionMedlem sedan dec. 19996 721 inlägg
#18

FOr-satser ska du inte blanda in, för du ska inte loopa in något.

Däremot glömde jag ju filename.... Ska nog gå och lägga mig....

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

Men det kräver att man laddar upp alla 4 bilderna.

Annars kan du döpa formulärfälten till samma som databasfälten och..

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

[Redigerat av emission den 22 feb 2001]

aleborgMedlem sedan jan. 20013 341 inlägg
#19

Nu funkade det :)

Tack

aleborgMedlem sedan jan. 20013 341 inlägg
#20

Hur gör jag när jag vill ladda upp en ny bild och ersätta namnet i databasen?

Försökt med olika varianter som jag vet funkar "normalt", provat alla möjliga kombinationer

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

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

' Save the files with their original names in a virtual path of the web server
' ****************************************************************************
intCount = mySmartUpload.Save("../picup")
' sample with a physical path
' intCount = mySmartUpload.Save("c:\temp\")

' Display the number of files uploaded
' ************************************
Response.Write(intCount & " file(s) uploaded.")
%>
<%
dim Conn
set rs= Server.CreateObject("ADODB.Recordset")
conn.Execute= "Update * FROM Produkter Where ID ="& Request.QueryString("ID") &""
For each file In mySmartUpload.Files
rs(file.name)=file.filename
next
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
%>

?

140 ms totalt · 3 externa anrop · v20260731065814-full.0e50b1ef
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
138 ms — hämta tråd, inlägg och bilagor (db)