Avatar billede baitianlong Nybegynder
04. maj 2005 - 14:37 Der er 7 kommentarer og
1 løsning

Upload billede og resize

Jeg har ofte lavet dette i php, men nu vil jeg prøve det i ASP

At uploade et billede fra en form og resize det til en bestemt størrelse + naturligvis gemme det i en bestemt mappe på webhotellet (Unoeuro).

Det kan man jo gøre ret enkelt i PHP, men kan man også det i ASP ?
Avatar billede baitianlong Nybegynder
04. maj 2005 - 15:03 #1
Følgende ASP komponenter er installeret:

ServerObjects-komponenter:
• AspMAIL
• AspPOP3
• AspHTTP
• AspDNS
• AspIMAGE

Dimac-komponenter:
• w3 JMail
• w3 Sockets

aspSmart-komponenter:
• aspSmartUpload

Persits Software-komponenter:
• AspUPLOAD
• AspXUpload
• AspJpeg
• AspPDF


Det burde jo gøre det hele lidt lettere :)
Avatar billede baitianlong Nybegynder
04. maj 2005 - 16:07 #2
Jeg har prøvet med dette script, der mere eller mindre er skrevet af fra Persits.

<%
Dim Xs, Upload, Path, File, jpeg, SavePath
Xs = Request("s")
if Xs <> "" Then
    Set Upload = Server.CreateObject("Persits.Upload.1")
    Path = Server.MapPath(".")
    Set File = Upload.Files(1)
    If File.ImageType <> "UNKNOWN" Then
        Set jpeg = Server.CreateObject("Persits.Jpeg")
        jpeg.Open( File.Path )
        jpeg.Width = jpeg.OriginalWidth * Upload.Form("scale") / 100
        jpeg.Height = jpeg.OriginalHeight * Upload.Form("scale") / 100
        SavePath = Path & "\small_" & File.ExtractFileName
        If UCase(Right(SavePath, 3)) <> "JPG" Then
          SavePath = SavePath & ".jpg"
        End If
        jpeg.Save SavePath
    End If
End If
%>
<form enctype="multipart/form-data" action="weblogsupload.asp">
<input type="hidden" name="s" value="upload">
<input type="file" name="file1">
<input type="submit" value="Upload">
</form>

Men det giver en

Persits.Upload.1 error '800a0009'

Index out of range.

/weblogsupload.asp, line 7
Avatar billede musicchart.dk Nybegynder
04. maj 2005 - 16:42 #3
Prøv det her

<%

function resize(sti,navn,ext,nyX)
    Set objImg = Server.CreateObject("AspImage.Image")
        objImg.PadSize = 0
        objImg.LoadImage Server.MapPath(sti & navn & "." & ext)
        objImg.GetImageFileSize Server.MapPath(sti & navn & "." & ext), X, Y
   
        ResizedX = nyX
        objImg.MaxX = X
        objImg.MaxY = Y
   
        if X > ResizedX then
            ResizedY = (ResizedX / objImg.MaxX) * objImg.MaxY
            objImg.ResizeR ResizedX, ResizedY
            objImg.FileName = (Server.MapPath(sti & navn & "." & ext))
            objImg.SaveImage
        end if
   
    Set objImg = Nothing
end function


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

strFil = mySmartUpload.Files.Item(1).FileName
strExt = mySmartUpload.Files.Item(1).FileExt

If not mySmartUpload.Files.Item(1).IsMissing Then
    mySmartUpload.Files.Item(1).SaveAs("upload/"& strFil & "." & strExt)
End If

set mySmartUpload = nothing

call resize("upload/",strFil,strExt,140)

%>
Avatar billede musicchart.dk Nybegynder
04. maj 2005 - 16:49 #4
call resize("upload/",strFil,strExt,140)

... tallet 140 angiver bredden i pixels - ændre det efter behov.
Husk det skal være jpg filer.
Avatar billede baitianlong Nybegynder
06. maj 2005 - 15:21 #5
Den siger:

aspSmartUpload error '800a0009'

Subscript out of range

/weblogsupload.asp, line 27


Linie 27 = mySmartUpload.Upload
Avatar billede musicchart.dk Nybegynder
06. maj 2005 - 16:29 #6
ehh... må jeg se hele din kode ?
Avatar billede baitianlong Nybegynder
06. maj 2005 - 18:18 #7
Jeg fandt et script på aspsmart websitet, og kombineret med din resize funktion virker det fint:

<%
function resize(sti,navn,nyX)
    Set objImg = Server.CreateObject("AspImage.Image")
        objImg.PadSize = 0
        objImg.LoadImage Server.MapPath(sti & navn)
        objImg.GetImageFileSize Server.MapPath(sti & navn), X, Y
   
        ResizedX = nyX
        objImg.MaxX = X
        objImg.MaxY = Y
   
        if X > ResizedX then
            ResizedY = (ResizedX / objImg.MaxX) * objImg.MaxY
            objImg.ResizeR ResizedX, ResizedY
            objImg.FileName = (Server.MapPath(sti & navn))
            objImg.SaveImage
        end if
   
    Set objImg = Nothing
end function

If Request("s") = "upload" Then

  Dim mySmartUpload
  Dim file1
  Dim intCount
  intCount=0

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

  mySmartUpload.Upload

  For each file1 In mySmartUpload.Files

      If not file1.IsMissing Then

        file1.SaveAs("/upload/" & file1.FileName)

        Response.Write("FileName = " & file1.FileName & "<br>")
        call resize("upload/",file1.FileName,140)
        Response.Write("<img src=""upload/" & file1.FileName & """ title=""Your uploaded image""><br>")
        intCount = intCount + 1
      End If
  Next

  Response.Write(intCount & " file(s) uploaded.<BR>")
Else
%>
<form method="post" enctype="multipart/form-data" action="weblogsupload.asp?s=upload">
<input type="file" name="file1">
<input type="submit" value="Upload">
</form>
<%
End If
%>

Så takker for resizet :)
Avatar billede musicchart.dk Nybegynder
06. maj 2005 - 20:24 #8
Hehe... ja, min dejlige resize funktion virker altid ... så lidt, og tak for point :o)
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