Avatar billede snoezel Nybegynder
13. januar 2003 - 13:19 Der er 10 kommentarer og
1 løsning

AspImage + saFileUp

Hejsa, jeg har lige et par spørgsmål :-)
Jeg skal lave en side hvor jeg uploader tekst+ billede til en access database, for herefter at få en "oversig" side frem med "thumpnail billede af det store oploadede billede.

1. Det er ikke så mange billeder ad gangen, så jeg vil bare have det til at ligge direkte i databasen - kan man det, når man skal lave thump bagefter ?

2. Er der nogen der kan brygge en upload formularside sammen til inspiration, skal nok selv rette den til.

/snoezel
Avatar billede snoezel Nybegynder
13. januar 2003 - 14:22 #1
Er der slet ingen der måske har brugt disse komponenter, og  har noget liggende, vil meget gerne i gang :-)
(men vil også gerne starte rigtigt)
Avatar billede snoezel Nybegynder
13. januar 2003 - 17:24 #2
Er der andre steder end eksperten - hvor man kan hente hjælp?
Hvor er I andre henne - er i kun her ?

Point til det bedste svar i stedet for :-)
Avatar billede angam Nybegynder
13. januar 2003 - 18:13 #3
Jeg kan ikke lige svare dig på hvordan (og om du kan) gemme billedet direkte i databasen. Men mon ikke der er en binary type du kan bruge?

Jeg har et upload-script til saFileUp der virker - du må nok lige rette lidt til hist og her :-)


<!-- #INCLUDE FILE="program.config" -->
<!-- #INCLUDE FILE="compo.asp" -->
<!-- #INCLUDE FILE="authorize.asp" -->
<%

Dim    Mode, PictureId, Output
    Mode = Request.QueryString("mode")
    PictureId = Request.QueryString("pictureid")
    If PictureId = "" Then PictureId = 0
    PictureId = cInt(PictureId)

    Select Case Mode
        Case "upload"        :    Output = StoreNewPicture()
        Case "slet"            :    Call DeletePicture()
                                PictureId = 0
    End Select

    Call PaintInfoWindow(output)


Function PaintInfoWindow(Error)
%>
<HTML>
<HEAD>
<TITLE>HesteInfo BilledUploader</TITLE>
<SCRIPT LANGUAGE="JavaScript">
// <!--
function ReloadPictureID() {
    var pictureid = document.mainform.pictureid.value;
    window.location = "<%=ScriptName%>?pictureid=" + pictureid;
}
// -->
</SCRIPT>
</HEAD>

<BODY BGCOLOR="#FFFFFF">
<%
    If Len(Error) > 0 Then _
        WriteLn "<P ALIGN=""center""><B>" & TextFormat(error) & "</B></P><HR>"

    WriteLn "<FORM ACTION="""& ScriptName &"?mode=upload&pictureid=0"" METHOD=""post"" ENCTYPE=""multipart/form-data"">"
    WriteLn "<TABLE BORDER=""0"">"
    WriteLn "<TR><TD COLSPAN=""2"">"& TextFormat("<B>Upload nyt billede</B>") &"</TD></TR>"

    WriteLn "<TR><TD>"& TextFormat("Billedfil") &"</TD>"
    WriteLn "<TD><INPUT TYPE=""file"" NAME=""UserFilename"" SIZE=""30""></TD></TR>"

    WriteLn "<TR><TD>"& TextFormat("Beskrivelse") &"</TD>"
    WriteLn "<TD><INPUT TYPE=""text"" NAME=""beskrivelse"" SIZE=""30"" MAXLENGTH=""50""></TD></TR>"
    WriteLn "</TABLE><INPUT TYPE=""submit"" VALUE=""Upload billede"">"
    WriteLn "</FORM><BR>"

    WriteLn "<FORM ACTION="""& ScriptName &""" METHOD=""post"" NAME=""mainform"">"
    WriteLn TextFormat("<B>Se billede</B>") &"<BR>"
    WriteLn "<SELECT NAME=""pictureid"" onChange=""ReloadPictureID();"">"
    WriteLn "<OPTION VALUE=""0"">--- Vælg billede ---</OPTION>"

    Dim    Id, Filename, Description, SelectedFilename, Selected
    SQL = "SELECT id, description, filename FROM pictures ORDER BY description"
    Set RS = Conn.Execute(SQL)

    Do While Not RS.EOF
        Id                = RS(0)
        Filename      = RS(2)
        Description    = RS(1)
        Selected = ""
        If PictureId = Id Then
            Selected = " SELECTED=""selected"""
            SelectedFilename = Filename
        End If
        WriteLn "<OPTION VALUE=""" & Id & """" & Selected &">" & Description & "</OPTION>"
        RS.MoveNext
    Loop
    WriteLn "</SELECT><BR>"

    IF PictureId > 0 Then
        WriteLn "<IMG SRC="""& path_Pictures & selectedFilename &"""><BR>"
        WriteLn "<FONT FACE=""arial"" SIZE=""-2""><A HREF="""& ScriptName &"?mode=slet&deleteid="& PictureId &""">Slet billede</A></FONT>"
    End If
    WriteLn "</FORM><HR>"
%></BODY></HTML><%
End Function


Function TextFormat(AText)
    TextFormat = "<FONT FACE=""arial"" SIZE=""-1"">"& AText &"</FONT>"
End Function



Function StoreNewPicture
    Dim local_SaveDirectory, Upl, LocalSession, Filename, Beskrivelse, FSO, Output
    local_SaveDirectory = Server.MapPath(path_Pictures)

    Set Upl = Server.CreateObject("SoftArtisans.FileUp")
    Filename = ExtractFilename(Upl.UserFilename)            '    SaveAs with full path?!?! - It works, so I dont care ...
    Beskrivelse = Upl.Form("beskrivelse")
    If beskrivelse = "" Then beskrivelse = Filename

    Set FSO = Server.CreateObject("Scripting.FileSystemObject")
    If FSO.FileExists(local_SaveDirectory & "\" &Filename) Then
        SQL = "SELECT description FROM pictures WHERE filename='"& Filename &"'"
        Set RS = Conn.Execute(SQL)
        Output = "Billedet med beskrivelsen """& RS(0) &""" har samme navn. Billedet blev ikke gemt."
    Else
'        LocalSession = Upl.Form("session")                '    I dont know why, but UPL() fucks up if the Path is not
        Upl.Path = local_SaveDirectory                    '    set here. This should not be necessary, because I use
        Upl.SaveAs local_SaveDirectory &"\"& Filename

        SQL = "INSERT INTO pictures (filename, description) VALUES (" &_
            "'"& filename    &"', "&_
        "'"& beskrivelse &"')"
        Call Conn.Execute(SQL)
    End If

    If Not FSO.FileExists(local_SaveDirectory & "\" & Filename) Then _
        Output = "Der opstod en fejl under fil-transmissionen. Billedet blev ikke gemt."

    StoreNewPicture = output
End Function



Function DeletePicture()
    Dim FSO, Filename
    PictureId = Request.QueryString("deleteid")
    SQL = "UPDATE product SET pictureid=0 WHERE pictureid="& PictureId
    Call Conn.Execute(SQL)

    Set FSO = CreateObject("Scripting.FileSystemObject")
    SQL = "SELECT filename FROM pictures WHERE id=" & PictureId
    Set RS = Conn.Execute(SQL)
    Filename = Server.MapPath(path_Pictures & RS(0))
    ON ERROR RESUME NEXT
      FSO.DeleteFile(Filename)
      IF (err.number=53) Or (err.number=0) THEN
        ' Filen eksisterer ikke - dvs. er blevet slettet
      ELSE
        WriteLn "FEJL:" & BR
        WriteLn err.number & BR
        WriteLn err.description & BR
      END IF
    ON ERROR GOTO 0
    Set FSO = Nothing

    SQL = "DELETE FROM pictures WHERE id="& PictureId
    Call Conn.Execute(SQL)
End Function


Function StorePicture(AFilename)
    Dim RS, SQL, Res
    Res = True

    SQL =    "INSERT INTO ImageDb (url,name) VALUES ("&_
            "'"&    path_Images & AFilename    &"',"&_
            "'"&    AFilename            &"')"
    Call Conn.Execute(SQL, EvaluateAsSql)

    StorePicture = Res
End Function



' ***    Resolves a filename from a path+filename:
Function ExtractFilename(AFilename)
    Dim Temp
    Temp = Mid(AFilename, InstrRev(AFilename, "\") + 1)
    Temp = Replace(Temp, " ", "")
    Temp = Replace(Temp, "&", "")
    Temp = Replace(Temp, "æ", "ae")
    Temp = Replace(Temp, "ø", "oe")
    Temp = Replace(Temp, "å", "aa")
    ExtractFilename = Temp
End Function

%>
Avatar billede snoezel Nybegynder
13. januar 2003 - 18:36 #4
ta skal du ha' - jeg prøver at lege med et :-)
Avatar billede snoezel Nybegynder
13. januar 2003 - 18:38 #5
din øverste include fil - er det en der skal bruges til scriptet ?
Avatar billede angam Nybegynder
13. januar 2003 - 19:57 #6
Det er konstanter til scriptet (primært tekst-konstanter) - såvidt jeg kan se er der ingen der bliver brugt i dette script.

I compo.asp ligger diverse html hjælperutiner. authorize.asp sørger for at man er logget ind inden man starter et upload.
Avatar billede snoezel Nybegynder
13. januar 2003 - 20:01 #7
det er bare fordi jeg får nogle fejl, bla. WriteLn - som jeg rettede til Response.write så virkede det.

Næste fejl:
Fejltype:
Der opstod en Microsoft VBScript-kørselsfejl (0x800A01A8)
Et objekt er obligatorisk: ''
upload.asp, line 57
Avatar billede angam Nybegynder
13. januar 2003 - 22:29 #8
Lyder helt sikkert som om at dit fil-objekt ikke er initialiseret:

  Set Upl = Server.CreateObject("SoftArtisans.FileUp")

enten ikke er kørt, eller har givet en fejl.
Avatar billede angam Nybegynder
13. januar 2003 - 22:32 #9
.. aahh - du har vist ret mht. WriteLn - den ligger i compo.asp. Den svarer rigtigt nok til Response.Write(text &"<br>")

Jeg kan ikke hjælpe dig særligt meget mht. upload-rutinen. Den er kodet af en (tidl.) kollega og undertegnede for 3 år siden - jeg har imellemtiden glemt alt om funktionalitet :-(
.. men da du nu var så desperat mht. hjælp, postede jeg hvad jeg kunne *gg*
Avatar billede snoezel Nybegynder
13. januar 2003 - 22:44 #10
Du har helt ret, jeg er desperat *GG*
Det ligner faktisk noget jeg kan bruge, det du har sendt - kan jeg få dig til at sende mig include filerne ? du skal selvfølgelig fjerne følsomme oplysninger først hvis de eksistere :-)
Måske på mail ?
Avatar billede snoezel Nybegynder
16. januar 2003 - 00:12 #11
prøver nyt spørgsmål
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