Avatar billede duno Nybegynder
28. september 2004 - 15:20 Der er 11 kommentarer og
1 løsning

kender i Persits.Upload (problem)

Jeg har følgende kode, den virker "fint" men med en lille twist..

når jeg uploader et jpg billede køre det hele fint, men når jeg prøvet at uploade et gif, BMP esv.. så skriver den stadig JPG i databasen.. men gemmer billedet som sin oprindelige type...

<%
Set Upload = Server.CreateObject("Persits.Upload")
' Upload filerne til RAM
Upload.Save

' Limit file size to 50000 bytes, throw an exception if file is larger
Upload.SetMaxSize 100000, True

' Gem filen med nyt navn
For Each File in Upload.Files
  File.SaveAs ("d:/www2/lz/log/" & Session("ID") & "" & file.Ext)
'  File.SaveAs Sever.Mappath("/log/" & session("ID") & "." & file.Ext)
Next




' Undgå samme filnavn på to billeder
' Upload.OverwriteFiles = False

' Perform upload

' Count = Upload.SaveVirtual("/log/")
If Err then
' 8 is the number of "File too large" exception
If Err.Number = 8 Then
  Response.Write "Billedet er over 100kb. <br><br> <a href=""uploadpic.asp"">Prøv et andet billede.</a>"
Else
  If Err <> 0 Then
      Response.Write "Der opstod en fejl " & Err.Description
      Response.Write "<br><br> <a href=""uploadpic.asp"">Prøv igen.</a>"
    end if
end if
 
else
%>
<!--#INCLUDE FILE="forbindelse.asp"-->

<%
    ' Billedestien indsættes i PersonTabel
    for each file in Upload.Files
      strSQL = "Update PersonTabel SET Sti = " & Session("ID") & "" & file.Ext & " WHERE PersonID LIKE '" & Session("ID") & "'"
      myConn.Execute(strSQL)
next

' personSQL = "UPDATE PersonTabel Set Billede = 'Ja' WHERE PersonID =" & Session("ID") & ""
' myConn.Execute(personSQL)
response.redirect("opdaterbilledesti.asp")
end if
%>
Avatar billede ldanielsen Nybegynder
28. september 2004 - 15:56 #1
Har du prøvet at udskrive stierne sådan:

for each file in Upload.Files
      Response.Write(Session("ID") & "" & file.Ext & "<br>")
      strSQL = "Update PersonTabel SET Sti = " & Session("ID") & "" & file.Ext & " WHERE PersonID LIKE '" & Session("ID") & "'"
      myConn.Execute(strSQL)
next

i øvrigt ser det ud til at der mangler et par plinger om stien i SQL'en, så mon der ikke er en fejl? Jeg kunne godt få det indtryk at du har en on error resume next, som vi ikke får at se??

Spm. er om man overhovedet kan loope formen to gange med den komponent?
Avatar billede duno Nybegynder
28. september 2004 - 16:33 #2
hmm.. det hele har virket før.. dengang havde jeg ikke brug for at omdøbe billedet, det er desvære et krav nu...

men jeg kan se at den lægger billedet op.. og omdøber det.. så ... hmm.. så langt så godt...

og nej .. jeg har ikke fjernet noget af koden... jeg har lagt alt hvad filen indeholder frem...

der skal jo findes en løsning
Avatar billede duno Nybegynder
28. september 2004 - 16:52 #3
ok.. fejlen er isoleret... hvis jeg uploader et JPG.. så fungere det hele efter hensigten...

uploader jeg andet en Jpg.. så "glemmer" den at updatere databasen.. det er den fulde kode ovenfor...

Duno :-)
Avatar billede eagleeye Praktikant
28. september 2004 - 17:02 #4
er det ikke fordi du mangler et punktum??? eller indeholder session("ID") også et punktum?:

  File.SaveAs ("d:/www2/lz/log/" & Session("ID") & "" & file.Ext)

Så det skaæl være sådan her:

  File.SaveAs ("d:/www2/lz/log/" & Session("ID") & "." & file.Ext)
Avatar billede duno Nybegynder
28. september 2004 - 19:16 #5
Jeg bruger denne kode på en anden side, der kan jeg uploade alt...

den neste forskel (har lige sat dem op imod hinanden) er at "fornavnet" på filen ændres til brugerens personid...

her kommer den anden kode lige..


<%
Set Upload = Server.CreateObject("Persits.Upload")

' Limit file size to 50000 bytes, throw an exception if file is larger
Upload.SetMaxSize 100000, True

' Undgå samme filnavn på to billeder
Upload.OverwriteFiles = False

' Perform upload

Count = Upload.SaveVirtual("/log/")
If Err then
' 8 is the number of "File too large" exception
If Err.Number = 8 Then
  Response.Write "Billedet er over 100kb. <br><br> <a href=""uploadpic.asp"">Prøv et andet billede.</a>"
Else
  If Err <> 0 Then
      Response.Write "Der opstod en fejl " & Err.Description
      Response.Write "<br><br> <a href=""uploadpic.asp"">Prøv igen.</a>"
    end if
end if
 
else
    Set myConn = Server.CreateObject("ADODB.Connection")
myConn.open = "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=d:/www2/lz/db/db.mdb;"
    ' Billedestien indsættes i PersonTabel
    for each file in Upload.Files
      strSQL = "Update PersonTabel SET Sti = '" & File.ExtractFileName & "' WHERE PersonID LIKE '" & Session("ID") & "'"
      myConn.Execute(strSQL)
next

personSQL = "UPDATE PersonTabel Set Billede = 'Ja' WHERE PersonID =" & Session("ID") & ""
myConn.Execute(personSQL)
response.redirect("billedevalg.asp")
end if
%>

Idanielsen dit forslag resultere i følgende:

910.gif

Microsoft JET Database Engine error '80040e14'

Syntax error (missing operator) in query expression '910.gif'.

/uploadscript.asp, line 52


måske forstår du det...

eagleeye din version virker som den anden.. altså kan jeg uploade alt.. det bliver bare ikke opdateret i databasen. og nej.. mit sessions ID indenholder ikke noget punktum.. men det lader til at komme med alligevel.. (se svar til idanielsen

Tak for hjælpen indtil nu og undskyld den lange svartid
Avatar billede duno Nybegynder
28. september 2004 - 20:19 #6
ldanielsen

Jeg sad lige og tænkte.. jeg ved at mit uploadscript virekede som den var før, men der er jo ikke nogen som siger at det også ville virke når den nu skulle omdøbe billedet og det hele..

men hvordan hulen ville du hive parametret Upload med i del 2 af upload delen.. viser lige hvordan jeg havde tænkt mig at dele det op...


undskyld de store og fyldige indlæg ""GG""

Del 1

<%
Set Upload = Server.CreateObject("Persits.Upload")
' Upload filerne til RAM
Upload.Save

' Limit file size to 50000 bytes, throw an exception if file is larger
Upload.SetMaxSize 100000, True

' Gem filen med nyt navn
For Each File in Upload.Files
  File.SaveAs ("d:/www2/lz/log/" & Session("ID") & "" & file.Ext)
'  File.SaveAs Sever.Mappath("/log/" & session("ID") & "." & file.Ext)
Next




' Undgå samme filnavn på to billeder
' Upload.OverwriteFiles = False

' Perform upload

' Count = Upload.SaveVirtual("/log/")
If Err then
' 8 is the number of "File too large" exception
If Err.Number = 8 Then
  Response.Write "Billedet er over 100kb. <br><br> <a href=""uploadpic.asp"">Prøv et andet billede.</a>"
Else
  If Err <> 0 Then
      Response.Write "Der opstod en fejl " & Err.Description
      Response.Write "<br><br> <a href=""uploadpic.asp"">Prøv igen.</a>"
    end if
end if
 
end if
response.redirect("opdaterbilled.asp")

%>



Del 2

<!--#INCLUDE FILE="forbindelse.asp"-->

<%
    ' Billedestien indsættes i PersonTabel
    for each file in Upload.Files
      strSQL = "Update PersonTabel SET Sti = '" & File.ExtractFileName & "' WHERE PersonID LIKE '" & Session("ID") & "'"
      myConn.Execute(strSQL)
next

response.redirect("opdaterbilledesti.asp")
%>
Avatar billede ldanielsen Nybegynder
29. september 2004 - 06:36 #7
910.gif

Microsoft JET Database Engine error '80040e14'

Syntax error (missing operator) in query expression '910.gif'.

/uploadscript.asp, line 52

Ja, det er fordi der mangler plinger omkring filnavnet i din Update-sætning
Avatar billede duno Nybegynder
03. oktober 2004 - 01:35 #8
Hej ..

Undskyld ventetiden...

Problemet er løst, hvad det var må guderne vide, men løsningen blev fundet ved et rent tilfælde, den nye version er bygget lidt om, om det var det der gjorde det ved jeg ikke.. men lad nu det ligge..

her er svaret..


<%
Option Explicit
Response.Buffer = False
%>
<html>
<head>
</head>
<body>
<div id="info">Billedet uploades..</div>

<!--#INCLUDE FILE="forbindelse.asp"-->
<%
dim MyConn, upload, file, strSQL
dim myfile, strErr

Set Upload = Server.CreateObject("Persits.Upload")
' Upload filerne til RAM
Upload.Save

' Limit file size to 50000 bytes, throw an exception if file is larger
Upload.SetMaxSize 100000, True

' indsæt filen i myfile, så vi kan kalde på den, med egenskaberne
myfile = Upload.Files(1)

response.write "EXT = *" & myfile.ext & "*<br><br>"
  File.SaveAs ("d:/www2/lz/log/" & Session("ID") & "" & myfile.Ext)

' Perform upload

' Count = Upload.SaveVirtual("/log/")
If Err then
' 8 is the number of "File too large" exception
  If Err.Number = 8 Then
    strErr = "Billedet er over 100kb. <br><br> <a href=""uploadpic.asp"">Prøv et andet billede.</a>"
  Else
    If Err <> 0 Then
      strErr = "Der opstod en fejl " & Err.Description
      strErr = strErr & "<br><br><a href=""uploadpic.asp"">Prøv igen.</a>"
    end if
  end if
 
  ' Hvis du vil bruge ' tegnet i din fejlmeddelelser, skal du aktivere denne linie:
  ' strErr = replace(strErr, "'", "\'")

  response.write "<script type='text/JavaScript'>"
  response.write "document.getElementByID('info').innerHTML = '" & strErr & "';"
  response.write "</script>"
else
%>
<!--#INCLUDE FILE="forbindelse.asp"-->
<%
  ' Billedestien indsættes i PersonTabel
  response.write "EXT = *" & myfile.ext & "*<br><br>"
  strSQL = "Update PersonTabel SET Sti = '" & Session("id") & myfile.Ext & "' where PersonID LIKE '" & Session("ID") & "'"
  myConn.Execute(strSQL)
 
  response.write "<script type='text/JavaScript'>location.href='opdaterbilledesti.asp';</script>"
end if
%>
</body>
</html>

det sjove er bare, at nu virker det somom at

Upload.SetMaxSize 100000, True

ikke har den store betydning mere, jeg har netop uploadet en fil på mere end 1.5 MB, og det er til trods for at den burde være låst.

Tak for hjælpen

Hilsen

Duno :-)

P.s. er der nogen af jer som vil dele points med mig, bare som tak for hjælpen så vend lige tilbage, ellers snupper jeg det hele selv ""GG""
Avatar billede ldanielsen Nybegynder
04. oktober 2004 - 07:51 #9
Hey, hvorfor skal du selv have point? Har du ikke fået svar som du kunne bruge? Den fejl jeg påpegede er da i hvert fald rettet i den færdige kode!
Avatar billede duno Nybegynder
04. oktober 2004 - 09:23 #10
jo det har du ret i.. men hele rettelsen er udført fra anden side...

men hey.. hellere give dig det hele end have sure miner på Eksperten!

points er sendt din vej, tak for hjælpen.

Duno :-)
Avatar billede ldanielsen Nybegynder
04. oktober 2004 - 10:00 #11
Jamen jeg er nu heller ikke sur, jeg tænkte bare at der var noget jeg ikke havde forstået.

Det lyder nu heller ikke som om du rigtig hat fået løst det ...?

Men det er vel almindelig høflighed at afslutte spørgsmålet i det forum det er rejst. Jeg har ikke rigtig lavet for 60 point arbejde, men jeg var nu slet ikke kommet igang endnu.

eagleeye > beklager at du ikke fik, det er vist en rigtig mandag morgen.
Avatar billede duno Nybegynder
04. oktober 2004 - 10:07 #12
he .. jamen det er jo gudsketak og lov kun mandag en gang om uge ;-)

al magt til tirsdag!

Eagleeye.. der skal nok komme andre spørgsmål og ikke mindst points den vej.. (man er vel en spørge jørgen :-)

Duno :-)
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