/ Forside / Teknologi / Udvikling / ASP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
ASP
#NavnPoint
smorch 9259
Harlekin 1866
molokyle 1040
Steffanst.. 758
gandalf 657
smilly 564
gibson 560
cumano 530
MouseKeep.. 480
10  Random 410
Hjælp til aspSmartUpload
Fra : Jacob ..


Dato : 06-01-04 22:29

Jeg har en form med nogle felter der skal sendes til min db og et
felt der vha aspsmartupload skal uploade et billede til en mappe.

Min postfunktion indeholder således en Insert-kommando og
efterfølgende en upload kommando:

<snip>

<%
Set Conn = Server.CreateObject("ADODB.Connection")
DSN = "DRIVER={Microsoft Access Driver (*.mdb)}; "
DSN = DSN & "DBQ=" & Server.MapPath("Database.mdb")
Conn.Open DSN

login = Replace(Request.Form("Login") & "", "'", "''")

sqlCheck = "SELECT COUNT(*) as antal FROM admin " & _
"WHERE Login = '" & Request.Form("Login") & "'"

set rs = conn.execute(sqlCheck)
If not rs.EOF Then
boolOK = rs(0) > 0
Else
boolOK = false
End If


If boolOK = 0 Then

Login = Trim(Replace(Request.Form("Login"),"'","''" ))
Password = Trim(Replace(Request.Form("Password"),"'","''" ))
Email = Trim(Replace(Request.Form("Email"),"'","''" ))
Town = Trim(Replace(Request.Form("Town"),"'","''" ))
Website = Trim(Replace(Request.Form("Website"),"'","''" ))

strSQL = "Insert into admin("

strSQL = strSQL & "Login, "
strSQL = strSQL & "Email, "
strSQL = strSQL & "Town, "
strSQL = strSQL & "Website, "
strSQL = strSQL & "Pic, "
strSQL = strSQL & "Password) "

strSQL = strSQL & "values( "

strSQL = strSQL & "'" & Request.Form("Login") & "', "
strSQL = strSQL & "'" & Request.Form("Email") & "', "
strSQL = strSQL & "'" & Request.Form("Town") & "', "
strSQL = strSQL & "'" & Request.Form("Website") & "', "
strSQL = strSQL & "'" & Request.Form("FILE1") & "', "
strSQL = strSQL & "'" & Request.Form("Password") & "') "

Conn.Execute(strSQL)

%>
<%

On Error Resume Next

' Variables
' *********
Dim mySmartUpload
Dim intCount

' Object creation
' ***************
Set mySmartUpload =
Server.CreateObject("aspSmartUpload.SmartUpload")

' Only allow txt or htm files
' ***************************
mySmartUpload.AllowedFilesList = "gif,jpg"

' DeniedFilesList can also be used :
' Allow all files except exe, bat and asp
' ***************************************
' mySmartUpload.DeniedFilesList = "exe,bat,asp"

' Deny physical path
' *******************
mySmartUpload.DenyPhysicalPath = True

' Only allow files smaller than 50000 bytes
' *****************************************
mySmartUpload.MaxFileSize = 50000

' Deny upload if the total fila size is greater than 200000
bytes
'
***************************************************************
mySmartUpload.TotalMaxFileSize = 200000

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

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


' Trap errors
' ***********
If Err Then
Response.Write("<b>Wrong selection : </b>" &
Err.description)
Else
' Display the number of files uploaded
' ************************************
Response.Write(intCount & " file(s) uploaded.")
End If
%>

<snip>

INSERT fungerer fint til databasen men upload af billedet giver
mig følgende fejl:

Wrong selection : 006~ASP 0206~Cannot call BinaryRead~Cannot call
BinaryRead after using Request.Form collection.

Jeg tolker det til, at FILE1-formfeltet (som er Browse-formfeltet
til billedet + det felt der sender til Databasefeltet "Pic"),
ikke kan bruges til både at uploade billedet og sende værdien til
databasen???

Nogle skarpe forslag?



--
Vil du lære at kode HTML, XHTML, CSS, SSI eller ASP?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

 
 
Chrisser (07-01-2004)
Kommentar
Fra : Chrisser


Dato : 07-01-04 08:36

Jacob .. wrote:
> Jeg har en form med nogle felter der skal sendes til min db og et
> felt der vha aspsmartupload skal uploade et billede til en mappe.
>
> Min postfunktion indeholder således en Insert-kommando og
> efterfølgende en upload kommando:

[snip kode]

> INSERT fungerer fint til databasen men upload af billedet giver
> mig følgende fejl:
>
> Wrong selection : 006~ASP 0206~Cannot call BinaryRead~Cannot call
> BinaryRead after using Request.Form collection.
>
> Jeg tolker det til, at FILE1-formfeltet (som er Browse-formfeltet
> til billedet + det felt der sender til Databasefeltet "Pic"),
> ikke kan bruges til både at uploade billedet og sende værdien til
> databasen???
>
> Nogle skarpe forslag?

Måske, hvis jeg har forstået dig ret så ligger alle oplysninger i samme form
?

Det du så skal gøre er at tage din aspSmartUpload del først, altså:

Set mySmartUpload = Server.CreateObject("aspSmartUpload.SmartUpload")
mySmartUpload.Upload

Derefter kan du gøre hvad du nu skal gøre med dit billede, og du kan hente
dine andre variable fra formen ud ved at bruge:

mySmartUpload.Form("Login")

Altså du bruger mySmartUpload-objektet istedet for Request-objektet.

Mvh
Chrisser



Jacob .. (07-01-2004)
Kommentar
Fra : Jacob ..


Dato : 07-01-04 21:33

> Derefter kan du gøre hvad du nu skal gøre med dit billede, og du kan hente
> dine andre variable fra formen ud ved at bruge:
>
> mySmartUpload.Form("Login")

Yes det virkede *men* jeg har brug for inputfeltet "FILE1" (som er det felt jeg
angiver mit billede), til også at sende værdien til min database. Det lykkedes
mig at uploade billedet, sende resten af mine inputfelter til db'en, men altså
ikke at sende værdien fra FILE1 til min DB.

Som jeg ser det kan man altså ikke "genbruge" FILE1 efter at asSmartUpload er
afhviklet? Nogen ideer til hvordan jeg kan det?

--
Vil du lære at kode HTML, XHTML, CSS, SSI eller ASP?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

Chrisser (08-01-2004)
Kommentar
Fra : Chrisser


Dato : 08-01-04 08:21

Jacob .. wrote:
> Yes det virkede *men* jeg har brug for inputfeltet "FILE1" (som er
> det felt jeg angiver mit billede), til også at sende værdien til
> min database. Det lykkedes mig at uploade billedet, sende resten af
> mine inputfelter til db'en, men altså ikke at sende værdien fra
> FILE1 til min DB.
>
> Som jeg ser det kan man altså ikke "genbruge" FILE1 efter at
> asSmartUpload er afhviklet? Nogen ideer til hvordan jeg kan det?

Jeg er ikke helt med på hvad det er du vil. Når du snakker om "FILE1" går
jeg ud fra at det er selve dit uploadfelt, altså:

<input type="file" name="FILE1">

Og hvad er det så du gerne vil gemme i databasen ? Stien til billedet, eller
selve billedet ?

For at få selve billedet ud skal du bruge nogle af AspSmartUploads eksempler
på brugen af komponenten, de ligger på deres hjemmeside, men jeg har et
eksempel her:

<%
dim billedsti, sti
sti = "C:/billeder"
For each file In mySmartUpload.Files
If not file.IsMissing Then
billedsti = Sti & "\" & file.FileName
file.SaveAs(billedsti) ' gemmer billedet
' herfra kan du for eksempel gemme billedsti i din database
End If
Next
%>

Hvis jeg har misforstået noget må du meget gerne præcisere hvad det er du
vil

Chrisser



Jacob .. (08-01-2004)
Kommentar
Fra : Jacob ..


Dato : 08-01-04 09:05

> Jeg er ikke helt med på hvad det er du vil. Når du snakker om "FILE1" går
> jeg ud fra at det er selve dit uploadfelt, altså:
>
> <input type="file" name="FILE1">

Korrekt

> Og hvad er det så du gerne vil gemme i databasen ? Stien til billedet, eller
> selve billedet ?

Udover at uploade billedet, ønsker jeg samtidigt at gemme stien i min database.

--
Vil du lære at kode HTML, XHTML, CSS, SSI eller ASP?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

Chrisser (08-01-2004)
Kommentar
Fra : Chrisser


Dato : 08-01-04 10:20

Jacob .. wrote:
>> Og hvad er det så du gerne vil gemme i databasen ? Stien til
>> billedet, eller selve billedet ?
>
> Udover at uploade billedet, ønsker jeg samtidigt at gemme stien i
> min database.

Godt, så gemmer du bare stien + filnavn i en variabel som du så bruger i en
sql sætning

Kiggede du på mit eksempel ?


Chrisser



Jacob .. (08-01-2004)
Kommentar
Fra : Jacob ..


Dato : 08-01-04 22:14

> Godt, så gemmer du bare stien + filnavn i en variabel som du så bruger i en
> sql sætning
> Kiggede du på mit eksempel ?

Ja, men jeg må indrømme at jeg er helt blank! Jeg har forsøgt mig med alt
undtagen den rigtige løsning.

Hvis jeg lige snipper min mit script her, kan du mon guide mig til den rigtige
løsning?

<snip>

<%
On Error Resume Next

' Variables
' *********
Dim mySmartUpload
Dim intCount

' Object creation
' ***************
Set mySmartUpload = Server.CreateObject("aspSmartUpload.SmartUpload")

' Only allow txt or htm files
' ***************************
mySmartUpload.AllowedFilesList = "gif,jpg"

' DeniedFilesList can also be used :
' Allow all files except exe, bat and asp
' ***************************************
' mySmartUpload.DeniedFilesList = "exe,bat,asp"

' Deny physical path
' *******************
mySmartUpload.DenyPhysicalPath = False

' Only allow files smaller than 30000 bytes
' *****************************************
mySmartUpload.MaxFileSize = 30000

' Deny upload if the total fila size is greater than 200000 bytes
' ***************************************************************
mySmartUpload.TotalMaxFileSize = 200000

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

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

' Trap errors
' ***********
If Err Then
Response.Write("<b>Der er opstået en fejl med billedet.<br><br>Tilladte
filtyper: .gif og .jpg<br>Tilladte størrelse: 30000 bytes")
Else
' Display the number of files uploaded
' ************************************
Response.Write(intCount & " file(s) uploaded.")
End If
%>
<%
Set Conn = Server.CreateObject("ADODB.Connection")
DSN = "DRIVER={Microsoft Access Driver (*.mdb)}; "
DSN = DSN & "DBQ=" & Server.MapPath("Database.mdb")
Conn.Open DSN

login = Replace(Request.Form("Login") & "", "'", "''")

sqlCheck = "SELECT COUNT(*) as antal FROM admin " & _
"WHERE Login = '" & Request.Form("Login") & "'"

set rs = conn.execute(sqlCheck)
If not rs.EOF Then
boolOK = rs(0) > 0
Else
boolOK = false
End If


If boolOK = 0 Then

Login = Trim(Replace(Request.Form("Login"),"'","''" ))
Password = Trim(Replace(Request.Form("Password"),"'","''" ))
Email = Trim(Replace(Request.Form("Email"),"'","''" ))
Town = Trim(Replace(Request.Form("Town"),"'","''" ))
Website = Trim(Replace(Request.Form("Website"),"'","''" ))

strSQL = "Insert into admin("

strSQL = strSQL & "Login, "
strSQL = strSQL & "Email, "
strSQL = strSQL & "Town, "
strSQL = strSQL & "Website, "
strSQL = strSQL & "Pic, "
strSQL = strSQL & "Password) "

strSQL = strSQL & "values( "

strSQL = strSQL & "'" & mySmartUpload.Form("Login") & "', "
strSQL = strSQL & "'" & mySmartUpload.Form("Email") & "', "
strSQL = strSQL & "'" & mySmartUpload.Form("Town") & "', "
strSQL = strSQL & "'" & mySmartUpload.Form("Website") & "', "
strSQL = strSQL & "'" & mySmartUpload.Form("FILE1") & "', "
strSQL = strSQL & "'" & mySmartUpload.Form("Password") & "') "

Conn.Execute(strSQL)

Response.Write "Oprettet billedeprofil"

Conn.Close
Set Conn = Nothing
%>

<snip>

Takker på forhådn!


--
Vil du lære at kode HTML, XHTML, CSS, SSI eller ASP?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

Chrisser (09-01-2004)
Kommentar
Fra : Chrisser


Dato : 09-01-04 08:21

Jacob .. wrote:
> Hvis jeg lige snipper min mit script her, kan du mon guide mig til
> den rigtige løsning?

Kan da prøve....

[snip kode]

> ' Save the files with their original names in a virtual path of
> the web server
> '
>
****************************************************************************
> intCount = mySmartUpload.Save("../Upload")

I ovenstående linie gemmer du de uploadede filer i ét hug, det er også fint
nok hvis man ikke skal andet, men i dit tilfælde har du brug for at kende
hver enkelt fil's sti + navn. Heldigvis er der andre måder at gemme filerne
på, her er et eksempel taget direkte fra deres side:
<%
Dim intCount
intCount=0
' Select each file
' ****************
For each file In mySmartUpload.Files
' Only if the file exist
' **********************
If not file.IsMissing Then
' Save the files with his original names in a virtual path of the web
server
'
**************************************************************************
file.SaveAs("/aspSmartUpload/Upload/" & file.FileName)
' Display the properties of the current file
' ******************************************
Response.Write("Name = " & file.Name & "<BR>")
Response.Write("Size = " & file.Size & "<BR>")
Response.Write("FileName = " & file.FileName & "<BR>")
Response.Write("FileExt = " & file.FileExt & "<BR>")
Response.Write("FilePathName = " & file.FilePathName & "<BR>")
Response.Write("ContentType = " & file.ContentType & "<BR>")
Response.Write("ContentDisp = " & file.ContentDisp & "<BR>")
Response.Write("TypeMIME = " & file.TypeMIME & "<BR>")
Response.Write("SubTypeMIME = " & file.SubTypeMIME & "<BR>")
intCount = intCount + 1
End If
Next

' Display the number of files which could be uploaded
' ***************************************************
Response.Write("<BR>" & mySmartUpload.Files.Count & " files could be
uploaded.<BR>")

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

Ovenstående tager fat i hver enkelt fil og gemmer i en virtuel sti, og du
skal have fat i hver enkelt fil for at kunne gemme i databasen. Hvis du
regner med at brugeren kun uploader én fil er det nemt at gemme filnavn +
sti i en variabel du kan bruge længere nede i din sql-sætning ( følgende
indsættes i løkken):
<%
billede = Server.Mappath("din virtuelle sti") & File.FileName ' fuld fysisk
sti
%>

Server.Mappath omsætter en virtuel sti til en fysisk sti, denne sættes
sammen med filnavnet og så har du den præcise placering af filen du kan
bruge senere. Idéen er så at du bruger variablen billede i din sql længere
nede.

Hvis du nu regner med at der skal kunne uploades flere billeder vil jeg
foreslå din enten at gemme stierne i et array, eller at flytte din
sql-sætning op i løkken, men det kommer jo an på hvad du vil.

[snip kode]

> strSQL = strSQL & "'" & mySmartUpload.Form("FILE1") & "', "

ovenstående skal i mit eksempel så være:

strSQL = strSQL & "'" & billede & "', "

En generel kommentar: Du tager dine værdier direkte fra formen og putter dem
ind i din sql-sætning. Jeg ville vælge at læse dem ud i variable først,
derefter validere dem for at være sikker på at du har fået det ind som du
forventer, og så bruge disse variable i sql'en.
Hvis nu brugeren indtaster tekst hvor du forventer et tal vil din side fejle
som det ser ud nu.

Ved et nærmere eftersyn læser du faktisk ind i variable først:

> Login = Trim(Replace(Request.Form("Login"),"'","''" ))

men disse variable bruger du ikke i din sql-sætning, så det nytter dig ikke
meget:

> strSQL = strSQL & "'" & mySmartUpload.Form("Login") & "', "

ovenstående skal istedet være:

strSQL = strSQL & "'" & Login & "', "

Håber det hjalp lidt på forståelsen, men ellers ligger der masser af
eksempler på
http://www.aspsmart.com/aspSmartUpload/


Chrisser




Jacob .. (09-01-2004)
Kommentar
Fra : Jacob ..


Dato : 09-01-04 15:57

> Kan da prøve....
Det sætter jeg *stor* pris på.

Det er nemlig kun én fil der skal/kan uploades så jeg har gjort følgende uden
held :

snip

<%
On Error Resume Next

' Variables
' *********
Dim mySmartUpload
Dim intCount

' Object creation
' ***************
Set mySmartUpload = Server.CreateObject("aspSmartUpload.SmartUpload")


' Only allow txt or htm files
' ***************************
mySmartUpload.AllowedFilesList = "jpg,gif"

' DeniedFilesList can also be used :
' Allow all files except exe, bat and asp
' ***************************************
' mySmartUpload.DeniedFilesList = "exe,bat,asp, htm, html, php, css"

' Deny physical path
' *******************
mySmartUpload.DenyPhysicalPath = True

' Only allow files smaller than 30000 bytes
' *****************************************
mySmartUpload.MaxFileSize = 30000

' Deny upload if the total fila size is greater than 200000 bytes
' ***************************************************************
mySmartUpload.TotalMaxFileSize = 200000

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

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

' Trap errors
' ***********
If Err Then
Response.Write("<b>Wrong selection : </b>" & Err.description)
Else
' Display the number of files uploaded
' ************************************
Response.Write(intCount & " file(s) uploaded.")
End If

Set Conn = Server.CreateObject("ADODB.Connection")
DSN = "DRIVER={Microsoft Access Driver (*.mdb)}; "
DSN = DSN & "DBQ=" & Server.MapPath("Database.mdb")
Conn.Open DSN

login = Replace(Request.Form("Login") & "", "'", "''")
billede = Server.Mappath("din virtuelle sti") & File.FileName

sqlCheck = "SELECT COUNT(*) as antal FROM admin " & _
"WHERE Login = '" & Request.Form("Login") & "'"

set rs = conn.execute(sqlCheck)
If not rs.EOF Then
boolOK = rs(0) > 0
Else
boolOK = false
End If


If boolOK = 0 Then

Login = Trim(Replace(Request.Form("Login"),"'","''" ))
Password = Trim(Replace(Request.Form("Password"),"'","''" ))
Email = Trim(Replace(Request.Form("Email"),"'","''" ))
Town = Trim(Replace(Request.Form("Town"),"'","''" ))
Website = Trim(Replace(Request.Form("Website"),"'","''" ))

strSQL = "Insert into admin("

strSQL = strSQL & "Login, "
strSQL = strSQL & "Email, "
strSQL = strSQL & "Town, "
strSQL = strSQL & "Website, "
strSQL = strSQL & "Pic, "
strSQL = strSQL & "Password) "

strSQL = strSQL & "values( "

strSQL = strSQL & "'" & mySmartUpload.Form("Login") & "', "
strSQL = strSQL & "'" & mySmartUpload.Form("Email") & "', "
strSQL = strSQL & "'" & mySmartUpload.Form("Town") & "', "
strSQL = strSQL & "'" & mySmartUpload.Form("Website") & "', "
strSQL = strSQL & "'" & billede & "', "
strSQL = strSQL & "'" & mySmartUpload.Form("Password") & "') "

Response.write strSQL
Response.end

Conn.Execute(strSQL)

%>

Billedet bliver rigtigt nok uploaded til korrekte mappe, men stien bliver ikke
sendt. Når jeg udskriver SQL:

Insert into admin(Login, Email, Town, Website, Pic, Password) values( 'Jacob',
'mail@mail.dk', 'Kbh', 'www.www.dk', '', 'xxxsss')

Det er meeeeeeeeeget mystsik (især når man er asp-novice)...

Hjæææææælp!

(Jeg ved at der et par overflødige linier, men - dem fjerner jeg når resten
virker ... )



--
Vil du lære at kode HTML, XHTML, CSS, SSI eller ASP?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

Chrisser (12-01-2004)
Kommentar
Fra : Chrisser


Dato : 12-01-04 08:27

Jacob .. wrote:

[snip kode]

>
****************************************************************************
> intCount = mySmartUpload.Save("../Upload") ' sample with a physical
> path ' intCount = mySmartUpload.Save("c:\temp\")

I stedet for ovenstående skal du prøve at hente filen og gemme den på den
måde jeg foreslog dig i mit foregående indlæg:

<%
Dim intCount
intCount=0
' Select each file
' ****************
For each file In mySmartUpload.Files
' Only if the file exist
' **********************
If not file.IsMissing Then
' Save the files with his original names in a virtual path of the web
server
'
**************************************************************************
file.SaveAs("../Upload/" & file.FileName)
billede = Server.Mappath("../Upload/" & File.FileName) ' giver fuld
fysisk sti

' Display the properties of the current file
' ******************************************
intCount = intCount + 1
End If
Next
' Display the number of files uploaded
' ************************************
Response.Write(intCount & " file(s) uploaded.<BR>")
%>

[snip kode]

> billede = Server.Mappath("din virtuelle sti") & File.FileName

Hvis du vil have fat i File.FileName er du nødt til at loope dig igennem
"mySmartUpload.Files" ( så vidt jeg ved - måske er der andre måder). Du kan
sammenligne det lidt med et Array og måden at tilgå dets værdier på.

[snip]

> Billedet bliver rigtigt nok uploaded til korrekte mappe, men stien
> bliver ikke sendt. Når jeg udskriver SQL:
>
> Insert into admin(Login, Email, Town, Website, Pic, Password)
> values( 'Jacob', 'mail@mail.dk', 'Kbh', 'www.www.dk', '', 'xxxsss')

God ide at udskrive sql-sætningen - så er det nemmere at fejlfinde

Chrisser



Søg
Reklame
Statistik
Spørgsmål : 177560
Tips : 31968
Nyheder : 719565
Indlæg : 6408943
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste