Avatar billede thomas_b Nybegynder
20. august 2004 - 20:41 Der er 39 kommentarer og
1 løsning

Jeg skal have en special upload-funktion !

Hej, Eksperter...

Jeg er ved at lave en hjemme side, men mangler en upload-funktion...
Vil i ikke hjælpe mig med at lave en...?
Den skal gerne kunne:

Kun uploade GIF og JPEG billeder (MAX 100.000) bytes
Skal have en resize-funktion på hvis billedet er over 640*480 pixel
Og sist men ikke minst skal den tilføje "width" & "height" på billedet til en databasse...

Får 200 point - hvis ikke alle punkterne kan lade sig gøre... så skidt med det...
Avatar billede clausbr Nybegynder
20. august 2004 - 22:27 #1
hoster du selv dit web sted eller hvad
Avatar billede thomas_b Nybegynder
20. august 2004 - 22:29 #2
Nej det gør jeg ikke, jeg leger det ?
Avatar billede clausbr Nybegynder
20. august 2004 - 22:32 #3
ok under støtter det asp
Avatar billede thomas_b Nybegynder
20. august 2004 - 22:33 #4
Ja, det gør det...
Avatar billede thomas_b Nybegynder
20. august 2004 - 22:40 #5
Kan du hjælpe mig...?
Avatar billede eagleeye Praktikant
21. august 2004 - 01:16 #6
Hvilket web-hotel har du?  Eller hvilke komponenter har du adgang til på dit web-hotel?
Avatar billede clausbr Nybegynder
21. august 2004 - 01:40 #7
jeg har fundet nogle stykker du kan download det er i zip filer du kan se dem er her
http://www.code.2com.dk dog er tekst på engelsk.

og de er gratis i brug.
Avatar billede thomas_b Nybegynder
21. august 2004 - 19:03 #8
eagleeye -> Jeg har ASP med Access database Og det selvnalige...
Avatar billede thomas_b Nybegynder
21. august 2004 - 19:05 #9
clausbr -> det var ikke lige den - den kunne jeg slet ikke køre..., det skal alt sammen forgå i aspfiler...!
Avatar billede eagleeye Praktikant
21. august 2004 - 19:12 #10
Ja det nok derfor du har oprettet i ASP kategorien :)
For at upload kræver det en upload komponet (ASPUpload, SAUpload, ASPSmartUpload,...) , hvis ikke dit web-hotel har en upload komponent må man lave upload koden uden komponenten, hvilket er lidt mere besværlidt.
For at resize kræver det et billede komponent (ASPimage, ...), hvis dit web-hotel har en billede komponent kan man ikke resize et billed.
Avatar billede thomas_b Nybegynder
21. august 2004 - 19:16 #11
Det mener jeg de har... Jeg har ringet til dem før og spurt...!
har du et på lager...?
Avatar billede eagleeye Praktikant
21. august 2004 - 19:26 #12
Har du ikke et link til dit web-hotel? Så vi præsis ved hvilke komponenter der kan bruges. Ja jeg har en del kode, men det nytter jo ikke meget at vise noget kode som bruger ASPupload til upload, hvis du kun har mulughed for at bruge ASPSmartUpload :)
Avatar billede thomas_b Nybegynder
21. august 2004 - 19:26 #13
Avatar billede eagleeye Praktikant
21. august 2004 - 19:42 #14
Du kommer ikke til at kunne få en resize funktion, da de ikke udersytter en billede komponent.
Hvilke komponenter kan jeg benytte mig af i min ASP kode?
Til ASP er tilknyttet flg. komponenter JMail, ASPsmartupload og w3Sockets
Avatar billede thomas_b Nybegynder
21. august 2004 - 19:56 #15
Hvordan kan du se det og hvad er :w3Sockets
Avatar billede thomas_b Nybegynder
21. august 2004 - 20:00 #16
Kunne uploade GIF og JPEG billeder (MAX 100.000) bytes
Og sist men ikke minst skal den tilføje "width" & "height" på billedet til en databasse...

Kan det så lade sig gøre...
Avatar billede eagleeye Praktikant
21. august 2004 - 20:01 #17
JMail bruges til at send email med
ASPsmartupload bruges til at upload filer med
w3Sockets er et netværk kommunikations komponent

Den enste måde man kan resize et billede i ASP er med en billede komponent.
Avatar billede thomas_b Nybegynder
21. august 2004 - 20:03 #18
okay... men kan det andet så lade sig gøre...
Avatar billede eagleeye Praktikant
21. august 2004 - 20:21 #19
Ja du kommer til at lave 3 filer. En fil som includes som kan finde størrelse højde, brede på et billede.
Lav en fil og copy/paste koden ind i den:

Filen  imgsize.asp



<%
  ':::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
  ':::                                                            :::
  ':::  This routine will attempt to identify any filespec passed  :::
  ':::  as a graphic file (regardless of the extension). This will :::
  ':::  work with BMP, GIF, JPG and PNG files.                    :::
  ':::                                                            :::
  ':::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
  ':::          Based on ideas presented by David Crowell          :::
  ':::                  (credit where due)                        :::
  ':::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
  ':::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
  ':::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
  '::: blah blah blah blah blah blah blah blah blah blah blah blah :::
  '::: blah blah blah blah blah blah blah blah blah blah blah blah :::
  '::: blah blah    Copyright *c* MM,  Mike Shaffer    blah blah :::
  '::: blah blah      ALL RIGHTS RESERVED WORLDWIDE      blah blah :::
  '::: blah blah  Permission is granted to use this code blah blah :::
  '::: blah blah  in your projects, as long as this    blah blah :::
  '::: blah blah      copyright notice is included      blah blah :::
  '::: blah blah blah blah blah blah blah blah blah blah blah blah :::
  '::: blah blah blah blah blah blah blah blah blah blah blah blah :::
  ':::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

  ':::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
  ':::                                                            :::
  ':::  This function gets a specified number of bytes from any    :::
  ':::  file, starting at the offset (base 1)                      :::
  ':::                                                            :::
  ':::  Passed:                                                    :::
  ':::      flnm        => Filespec of file to read              :::
  ':::      offset      => Offset at which to start reading      :::
  ':::      bytes      => How many bytes to read                :::
  ':::                                                            :::
  ':::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
  function GetBytes(flnm, offset, bytes)

    Dim objFSO
    Dim objFTemp
    Dim objTextStream
    Dim lngSize

    on error resume next

    Set objFSO = CreateObject("Scripting.FileSystemObject")
   
    ' First, we get the filesize
    Set objFTemp = objFSO.GetFile(flnm)
    lngSize = objFTemp.Size
    set objFTemp = nothing

    fsoForReading = 1
    Set objTextStream = objFSO.OpenTextFile(flnm, fsoForReading)

    if offset > 0 then
        strBuff = objTextStream.Read(offset - 1)
    end if

    if bytes = -1 then        ' Get All!

        GetBytes = objTextStream.Read(lngSize)  'ReadAll

    else

        GetBytes = objTextStream.Read(bytes)

    end if

    objTextStream.Close
    set objTextStream = nothing
    set objFSO = nothing

  end function


  ':::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
  ':::                                                            :::
  ':::  Functions to convert two bytes to a numeric value (long)  :::
  ':::  (both little-endian and big-endian)                        :::
  ':::                                                            :::
  ':::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
  function lngConvert(strTemp)
    lngConvert = clng(asc(left(strTemp, 1)) + ((asc(right(strTemp, 1)) * 256)))
  end function

  function lngConvert2(strTemp)
    lngConvert2 = clng(asc(right(strTemp, 1)) + ((asc(left(strTemp, 1)) * 256)))
  end function

 
  ':::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
  ':::                                                            :::
  ':::  This function does most of the real work. It will attempt  :::
  ':::  to read any file, regardless of the extension, and will    :::
  ':::  identify if it is a graphical image.                      :::
  ':::                                                            :::
  ':::  Passed:                                                    :::
  ':::      flnm        => Filespec of file to read              :::
  ':::      width      => width of image                        :::
  ':::      height      => height of image                        :::
  ':::      depth      => color depth (in number of colors)      :::
  ':::      strImageType=> type of image (e.g. GIF, BMP, etc.)    :::
  ':::                                                            :::
  ':::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
  function gfxSpex(flnm, width, height, depth, strImageType)

    dim strPNG
    dim strGIF
    dim strBMP
    dim strType
    strType = ""
    strImageType = "(unknown)"

    gfxSpex = False

    strPNG = chr(137) & chr(80) & chr(78)
    strGIF = "GIF"
    strBMP = chr(66) & chr(77)

    strType = GetBytes(flnm, 0, 3)

    if strType = strGIF then                ' is GIF

        strImageType = "GIF"
        Width = lngConvert(GetBytes(flnm, 7, 2))
        Height = lngConvert(GetBytes(flnm, 9, 2))
        Depth = 2 ^ ((asc(GetBytes(flnm, 11, 1)) and 7) + 1)
        gfxSpex = True

    elseif left(strType, 2) = strBMP then        ' is BMP

        strImageType = "BMP"
        Width = lngConvert(GetBytes(flnm, 19, 2))
        Height = lngConvert(GetBytes(flnm, 23, 2))
        Depth = 2 ^ (asc(GetBytes(flnm, 29, 1)))
        gfxSpex = True

    elseif strType = strPNG then            ' Is PNG

        strImageType = "PNG"
        Width = lngConvert2(GetBytes(flnm, 19, 2))
        Height = lngConvert2(GetBytes(flnm, 23, 2))
        Depth = getBytes(flnm, 25, 2)

        select case asc(right(Depth,1))
          case 0
              Depth = 2 ^ (asc(left(Depth, 1)))
              gfxSpex = True
          case 2
              Depth = 2 ^ (asc(left(Depth, 1)) * 3)
              gfxSpex = True
          case 3
              Depth = 2 ^ (asc(left(Depth, 1)))  '8
              gfxSpex = True
          case 4
              Depth = 2 ^ (asc(left(Depth, 1)) * 2)
              gfxSpex = True
          case 6
              Depth = 2 ^ (asc(left(Depth, 1)) * 4)
              gfxSpex = True
          case else
              Depth = -1
        end select


    else

        strBuff = GetBytes(flnm, 0, -1)        ' Get all bytes from file
        lngSize = len(strBuff)
        flgFound = 0

        strTarget = chr(255) & chr(216) & chr(255)
        flgFound = instr(strBuff, strTarget)

        if flgFound = 0 then
          exit function
        end if

        strImageType = "JPG"
        lngPos = flgFound + 2
        ExitLoop = false

        do while ExitLoop = False and lngPos < lngSize

          do while asc(mid(strBuff, lngPos, 1)) = 255 and lngPos < lngSize
              lngPos = lngPos + 1
          loop

          if asc(mid(strBuff, lngPos, 1)) < 192 or asc(mid(strBuff, lngPos, 1)) > 195 then
              lngMarkerSize = lngConvert2(mid(strBuff, lngPos + 1, 2))
              lngPos = lngPos + lngMarkerSize  + 1
          else
              ExitLoop = True
          end if

      loop
      '
      if ExitLoop = False then

          Width = -1
          Height = -1
          Depth = -1

      else

          Height = lngConvert2(mid(strBuff, lngPos + 4, 2))
          Width = lngConvert2(mid(strBuff, lngPos + 6, 2))
          Depth = 2 ^ (asc(mid(strBuff, lngPos + 8, 1)) * 8)
          gfxSpex = True

      end if
                 
    end if

  end function

%>
Avatar billede eagleeye Praktikant
21. august 2004 - 20:22 #20
Lav en fil hvor upload formen er på du kan evt. kalde en uploadform.asp :


<HTML>
<BODY>

<FORM METHOD="POST" ACTION="upload.asp" ENCTYPE="multipart/form-data">
  <INPUT TYPE="FILE" NAME="FILE1" SIZE="50"><BR>
  <INPUT TYPE="SUBMIT" VALUE="Upload">
</FORM>

</BODY>
</HTML>
Avatar billede eagleeye Praktikant
21. august 2004 - 20:25 #21
Sidste fil skal hedde upload.asp  koden som uploader og gemmer i databasen.

Der er to stedre du skal rette i filen
1. Connection strengen til databse så den passer med dit
2. Hvor filen skal gemmens lige det er denne linje, lige nu er det i en folder som hedder billeder som ligger i roden:
  billedeNavn = "/billeder/" & file.FileName


<!--include file="imgsize.asp"-->
<HTML>
<BODY>
<%
'On Error Resume Next
Set mySmartUpload = Server.CreateObject("aspSmartUpload.SmartUpload")
'definer hvilke fil typer der tillades
mySmartUpload.AllowedFilesList = "gif,jpg,jpeg"
'Max størrelse på file
mySmartUpload.MaxFileSize = 100000
'henter post data så andre form felter kan hentes med mySmartUpload.form("xxx")
mySmartUpload.Upload

if not mySmartUpload.files("FILE1").ismissing then
  Set file = mySmartUpload.files("FILE1")
  'Gem filen
  'Vælg hvor filen skal gemmes
  billedeNavn = "/billeder/" & file.FileName
  file.SaveAs billedeNavn
 
  gfxSpex(Server.Mappath(billedeNavn), w, h, c, strType
  Set Conn = Server.CreateObject("ADODB.Connection")
  'Tjek connection strengen er rigtig
  Conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.Mappath("/db/db.mdb")
 
  SQL = "insert into TabelNavn (billedenavn, width, height) values ('" & billedeNavn & "', " & w & ", " & h & ")"
  Conn.Execute(SQL)
  Conn.Close
  Set Conn=Nothing
end if

if billedeNavn <> "" then
  Response.Write "Filen " & billedeNavn & " er uploadet."
else
  Response.Write "Ingen fil uploadet"
end if
 
%>
</BODY>
</HTML>
Avatar billede thomas_b Nybegynder
21. august 2004 - 20:27 #22
Denne script tilføjer ikke height og width til DB...!
ved du ikke helt tilfældigvis hvis nu man har Set objFSO = CreateObject("Scripting.FileSystemObject") -- hvordan man fremkalder width og height???
Avatar billede eagleeye Praktikant
21. august 2004 - 20:30 #23
Man kan ved hjælp af FSO læse filen og finde width og height da de ligger på nogle bestemte adresser i filen, alt efter hvilken fil type det er.
Avatar billede thomas_b Nybegynder
21. august 2004 - 20:32 #24
er det den monster-kode gør ?
Avatar billede eagleeye Praktikant
21. august 2004 - 20:33 #25
Ja.
Avatar billede eagleeye Praktikant
21. august 2004 - 20:35 #26
Derfor er det lagt i en fil for sig selv, så kan man include filen hvis man har behov for den funktion :)
Avatar billede thomas_b Nybegynder
21. august 2004 - 20:37 #27
og hvis man ikke skal bruge den... er den kode i 20:25:32 den mindste man kan få...?
Avatar billede eagleeye Praktikant
21. august 2004 - 20:49 #28
Ja det kan man sige, men man kan lave selve upload kode det på 2-6 linjer hvis ikke der skal gemmes i database, eller tjekke på fil størrelse og type.
Det med at finde bredde og højde fylder jo ikke andet end en linje kode i upload.asp filen.
Avatar billede thomas_b Nybegynder
21. august 2004 - 20:55 #29
Hvordan ville koden se ud hvis jeg kun skulle kunne uploade GIF eller JPEG billeder  på MAX 100.000 bytes
Avatar billede eagleeye Praktikant
21. august 2004 - 20:58 #30
Dette styk kode gemmer de valgte filer:


<HTML>
<BODY>
<%
Set mySmartUpload = Server.CreateObject("aspSmartUpload.SmartUpload")
mySmartUpload.AllowedFilesList = "gif,jpg,jpeg"
mySmartUpload.MaxFileSize = 100000
mySmartUpload.Upload
mySmartUpload.Save("/billeder")
%>
</BODY>
</HTML>
Avatar billede thomas_b Nybegynder
21. august 2004 - 21:00 #31
men den virker da ikke bare sådan, den skal da have noget mere kode... skal den ikke ???
Avatar billede eagleeye Praktikant
21. august 2004 - 21:03 #32
Jo det kræver en form som vist i 21/08-2004 20:22:48 hvor man kan vælge filerne som skal uploades :)
Avatar billede thomas_b Nybegynder
21. august 2004 - 21:20 #33
hvad betyder: if not mySmartUpload.files("FILE1").ismissing then -- i 20:25:32 ???
Avatar billede eagleeye Praktikant
21. august 2004 - 21:24 #34
Det betyder den kun går ind i then delen af if sætningen hvis man har valgt en fil. Hvis der ikke er valgt en fil og trykke "send" kommer der ikke en tom post i databsen.
Avatar billede thomas_b Nybegynder
26. august 2004 - 22:08 #35
svar
Avatar billede eagleeye Praktikant
26. august 2004 - 22:10 #36
Hvad sker der lige her jeg har svaret på dig sprøgsmål.
Avatar billede eagleeye Praktikant
26. august 2004 - 22:13 #37
Hvorfor tager du selv point??
Hvis du beholder dem selv anmelder jeg dig.
Avatar billede thomas_b Nybegynder
26. august 2004 - 23:50 #38
så opretter jeg en ny, besvare du så den -> så kan du få dem okay..?
Avatar billede eagleeye Praktikant
26. august 2004 - 23:51 #39
ok.
Avatar billede Slettet bruger
09. januar 2005 - 12:26 #40
Hej eagleeye,

Har prøvet og bruge din kode til af virke men få en felj i upload.asp

gfxSpex(Server.Mappath(billedeNavn), w, h, c, strType

Fejltype:
Der opstod en Microsoft VBScript-kompileringsfejl (0x800A03EE)
Tegnet ')' var ventet
upload.asp, line 21, column 53
gfxSpex(Server.Mappath(billedeNavn), w, h, c, strType
----------------------------------------------------^

Og hvis jeg sætter ) ind få jeg feljen

Der kan ikke bruges parenteser ved kald af en Sub
/admin/design/opload/upload/upload.asp, line 21, column 46
gfxSpex(Server.Mappath(billedeNavn), w, h, c, strType)


Kan godt oprette et nyt spm hvis du vil have point for dette??????
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