Avatar billede chris Nybegynder
11. januar 2000 - 23:26 Der er 13 kommentarer og
1 løsning

E-Mail form + database + upload

Ja, der er nok nogle der lige kigger en ekstra gang på de point jeg giver her, men jeg _HÅRDT_ brug for dette, og har selv snart opgivet det. (har givet halvdelen af de point jeg ejer)

Jeg har brug for:
En form med diverse felter, og hvor brugeren kan hvis han/hun har brug for det uploade et billede.

Det skal så sendes til en database, OG samtidig til en email adresse. (evt i html output så billedet kan ses)

Disse point er dine hvis du kan hjælpe med dette ... enten ved at sende mig et komplet sæt koder....eller henvise til steder der KLART angiver hvordan jeg takler dette.

Helst komponenter som ikke koster noget.... ellers har jeg mulighed for brug af SA-Fileupload... og har også mulighed for at bruge MS Posting Acceptor

Alle svar er meget velkommende



Avatar billede baunsgaard Nybegynder
12. januar 2000 - 01:01 #1
Nedenfor er en løsning, der virker! Den er ikke vildt pæn men det går forhåbentlig. Den hedder all_in_one.asp, kald den blot med det navn og det skulle være nemt derefter. Mailen, der sendes indeholder hverken billede eller er i HTML format - i stedet er der et link til all_in_one.asp, hvor billedet kan vises.

Der skal sættes nogle få ting op før det virker - de står i toppen af filen. Jeg bruger SA-FileUp, CDONTS og en Access database. Databasen har følgende tre felter

ID, AutoNumber, Primary Key
Pic, OLE Object
Email, Text

Koden kommer her - det er en "lang" fil!

<%@ Language=VBScript %>
<% Response.Buffer = True %>
<!--#include file="adovbs.inc" -->
<%

'-- Ændrer nedenstående tre linier
strConn = "DSN=Test;UID=;PWD=;"
strServer = "http://www.test.dk/picapp/"
strFrom = "postmaster@idontknow.dk"

%>
<HTML>
<HEAD>
</HEAD>
<BODY>
<%
select case CLng(Request.QueryString("ID"))
    case 1
    '-- Formen håndteres og gemmes i databasen
        set conn = Server.CreateObject("ADODB.Connection")
        conn.Open strConn
       
        set rs = Server.CreateObject("ADODB.Recordset")
        rs.Open "SELECT * FROM PicTable WHERE 1=2", conn, adOpenDynamic,adLockPessimistic
       
        set upl = Server.CreateObject("SoftArtisans.FileUp.1")
       
        rs.AddNew
        rs("Email") = upl.Form("Email")
               
        upl.SaveAsBlob(rs("Pic"))
       
        rs.Update
        rs.Close
       
        rs.Open "SELECT ID FROM PicTable ORDER BY ID DESC", conn
        rs.MoveFirst
       
        newID = rs("ID")
       
        rs.Close
        set rs = Nothing
        set conn = Nothing
        set upl = Nothing

        Response.Write "All well<br>"
        Response.Write "<a href=""all_in_one.asp?ID=2&PicID=" & newID & """>See input</a>"

    case 2
    '-- Det gemte vises
        set conn = Server.CreateObject("ADODB.Connection")
        conn.Open strConn
       
        set rs = Server.CreateObject("ADODB.Recordset")
        rs.Open "SELECT Email, Pic FROM PicTable WHERE ID=" & CLng(Request.QueryString("PicID")), conn
        rs.MoveFirst
%>
        Email <% =rs("Email") %><br>
        Picture: <img src="all_in_one.asp?ID=3&PicID=<% =CLng(Request.QueryString("PicID")) %>"><br><br>
        <a href="all_in_one.asp?ID=4&PicID=<% =CLng(Request.QueryString("PicID")) %>">Send mail</a>
       
<%       
        set rs = Nothing
        set conn = Nothing

    case 3
    '-- Billedet vises
        Response.Clear
        Response.ContentType = "image/gif"

        set conn = Server.CreateObject("ADODB.Connection")
        conn.Open strConn
       
        set rs = Server.CreateObject("ADODB.Recordset")
        rs.Open "SELECT * FROM PicTable WHERE ID=" & CLng(Request.QueryString("PicID")), conn
        rs.MoveFirst

        Response.BinaryWrite rs("Pic")

        rs.Close
        set rs = Nothing
        set conn = Nothing
        Response.End
       
    case 4
    '-- Der sendes en email       
        set conn = Server.CreateObject("ADODB.Connection")
        conn.Open strConn
       
        set rs = Server.CreateObject("ADODB.Recordset")
        rs.Open "SELECT * FROM PicTable WHERE ID=" & CLng(Request.QueryString("PicID")), conn
        rs.MoveFirst

        set mail = Server.CreateObject("CDONTS.NewMail")

        mail.From = strFrom
        mail.To = rs("Email")
        mail.Subject = "Billede modtaget"
        mail.Body = "Se billede på " & strServer & "all_in_one.asp?ID=3&PicID=" & rs("ID")
        mail.send
       
        set mail = Nothing
       
        rs.Close
        set rs = Nothing
        set conn = Nothing

        Response.Write "Mail Sendt!!"
   
    case else %>

<h1>Test</h1>
<form action="all_in_one.asp?ID=1" method="post" enctype="multipart/form-data">
Fil: <input type="file" name="file"><br>
Email <input type="text" name="email"><br>
<input type="submit">
</form>
<%
end select
%>
</BODY>
</HTML>


Kom endelig med kommentarer, hvis der er ting du har problemer med. Jeg er dog først tilbage onsdag aften... Held og lykke.

Mvh
Avatar billede baunsgaard Nybegynder
12. januar 2000 - 01:03 #2
BTW, løsningen ovenfor virker kun med gif-filer. Der skal en mindre udvidelse til at kunne håndtere både gif og jpg...

Mvh
Avatar billede chris Nybegynder
12. januar 2000 - 01:39 #3
Tusind tak skal du have baunsgaard....jeg vil teste det ASAP
Avatar billede s Nybegynder
12. januar 2000 - 14:53 #4
Hvis du vil undgå komponenter kan du prøve at søge under "upload uden komponenter" i ASP-kategorien her på eksperten. Så vil der komme nogle eksempler.
Avatar billede baunsgaard Nybegynder
12. januar 2000 - 15:15 #5
s>> Eksemplet på ActiveServerPages.dk i julekalenderen (som også er blevet diskuteret på eksperten.dk) tror jeg ikke der kan håndtere almindelige tekstfelter samtidig med binære data... Jeg kan dog nemt tage fejl!
Avatar billede chris Nybegynder
12. januar 2000 - 15:19 #6
Baunsgaard: må jeg kontakte dig via email ?
Avatar billede s Nybegynder
12. januar 2000 - 15:24 #7
Det var nu heller ikke det jeg tænkte på. Men jeg kan huske jeg engang læste en artikel om det...
Avatar billede baunsgaard Nybegynder
12. januar 2000 - 15:48 #8
chris>> Skriv din email adresse så sender jeg min...
Avatar billede chris Nybegynder
12. januar 2000 - 15:49 #9
cs@lyngbyes.dk
Avatar billede sbs Nybegynder
12. januar 2000 - 20:01 #10
Læser jeg koden forkert eller bliver billedet gemt i databasen og ikke som en 'løs' fil på serveren?
Hvis den bliver gemt i databasen hvordan kan det så være hensigstmæssigt? Vil databasen ikke komme til at fylde enormt meget til sidst? Jeg ved godt, at man kun 'åbner' for de data som man kalder i sql sætningen, men bliver siden ikke hurtigere hvis det kun er stien der ligger i databasen og filen ligger løst på serveren?

Det skal lige nævnes at jeg ikke har den store forstand på det, jeg kunne bare godt tænke mig en forklaring....
Avatar billede baunsgaard Nybegynder
12. januar 2000 - 20:09 #11
sbs>> Jo, det har du ret i, men administrationen af databasen og eventuelle tilhørende filer bliver simplificeret af at gemme dem i databasen. På sin vis vil har harddisken jo også komme til at fylde enormt på et tidspunkt :-)
Avatar billede chris Nybegynder
13. januar 2000 - 00:04 #12
Jeg svæver på en lyserød sky i glæde over at det virker.... TUSIND TAK.!

Det er alle point'ne værd
Avatar billede sbs Nybegynder
13. januar 2000 - 09:34 #13
baunsgaard>> vil det sige at selvom billederne ligger i databasen, så vil det ikke gå ud over hastigheden?
Der er vel den ulempe, at hvis man engang i mellem vil downloade en backup af databasen, så er det jo som at downloade et større program. Hvorimod hvis billederne lå som løse filer, gjorde det ikke så meget hvis forbindelsen pludselig gik ned, så kunne man nemt fortsætte der hvor den slap.

Hvis man skal kunne bruge dit eksempel til jpg's er det så kun i 'case 3' der skal rettes? - der hvor billedet vises?
Avatar billede chris Nybegynder
13. januar 2000 - 10:41 #14
Sbs: Jeg ved godt at det er generalt du måske nævner det med størrelsen ....men jeg skal bruge dette i et Intranet.... så størelsen og hastighed spiller ikke den store rolle her ved mig...da det er et 100mbit netværk.
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