webForumDet fria alternativet

Aspupload

12 svar · 1 564 visningar · startad av freddssite

freddssiteMedlem sedan maj 2001123 inlägg
#1

Jag vill kunna ladda upp bilder som automatiskt ställs om till en en given storlek på höjd och bredd samt förminskar byte storleken!

Mitt webhotell säger sig ha aspupload installerat...kan man med denna komponent göra så som jag önskar och hur gör man isåfall! hade vart grymt om detta kunde lösas!

J.N.Medlem sedan apr. 20031 660 inlägg
#2

HEJ!

Har de ingen manual, eller ens hänvisar till tillverkarens webbplats?
http://www.aspupload.com/manual_image.html

De måste ha AspJpeg, eller liknande, för det.

1337 (inlägg) som jag efter lång tid förstått varför det är coolt!
http://en.wikipedia.org/wiki/Leet

@ndersMedlem sedan juni 200032 969 inlägg
#3

Du kan inte skala om bilder med ASPUpload, utan du måste använda en komponent avsedd för det ändamålet, ex. ASPJpeg.

J.N.Medlem sedan apr. 20031 660 inlägg
#4

Det var jag också säker på, men när jag letade upp manualen stod det att man kunde det!

Ser nu att jag missade en viktig passus "AspUpload can be used in conjunction with ... AspJpeg ...". :r

MickeA.comMedlem sedan feb. 20034 441 inlägg
#5

Tjena
Här har du lite exempel kod på hur du kan använda ASP Upload för uppladdning och AspJpeg för att ändra storlek samt skapa miniatyr:

Set Upload = Server.CreateObject("Persits.Upload")
Upload.Save(Server.MapPath("uploaded"))
Set File = Upload.Files("NAMNET_PÅ_INPUT_FILE")
	
If Not File Is Nothing Then
        ' Är det en bild?
	If File.ImageType = "UNKNOWN" Then
		File.Delete
		Response.Write("Filen du försöker ladda upp är ingen bild...")
		Response.End
	End If

	' Skapa AspJpeg Objekten
	Set JpegPic	= Server.CreateObject("Persits.Jpeg")
	Set JpegTmb	= Server.CreateObject("Persits.Jpeg")

        ' Välj ett filnamn (File.Name är 'originalnamnet') och spara filen
	FilNamn = "Min_Fil" & File.Ext
	File.Move Server.MapPath("KATALOG") & "\" & FilNamn
	
        ' Öppna den uppladdade bilden för att skala om den:
        JpegPic.Open Server.MapPath("..\pics\shop\pics") & "\" & FilNamn
        ' Om storleken ä'r större än 547px, skala ner den till 547px, behåll proportionerna.
	If JpegPic.Width > 547 Then
		mWidth = 547
		JpegPic.PreserveAspectRatio = True
		JpegPic.Width = mWidth
	End If
        ' Spara bilden
	JpegPic.Save Server.MapPath("KATALOG\pics") & "\" & FilNamn

	tWidth	= JpegPic.Width
	tHeight	= JpegPic.Height
	
        ' Öppna bilden en gång till för att skapa miniatyr:			
	JpegTmb.Open Server.MapPath("..\pics\shop\pics") & "\" & FilNamn
	mHeight = 85
	JpegTmb.PreserveAspectRatio = True
	JpegTmb.Height = mHeight
        Skala ner bilden och beskär om bredden är mer än 110px.
	If JpegTmb.Width > 110 Then
		JpegTmb.Crop 0, 0, 110, 85
	End If
        ' Spara miniatyr
	JpegTmb.Save Server.MapPath("..\pics\shop\thumbs") & "\" & FilNamn
	
        ' Stäng objekten
	Set JpegPic		= Nothing
	Set JpegTmb		= Nothing
End If
Set Upload		= Nothing

Jag använder AspUpload / AspJpeg väldigt mycket. Det är två mycket bra komponenter att jobba med, lätt att lära sig, dessutom har dom fenomenala hjälpsidor, som nämnda tidigare, http://www.aspupload.com resp. http://www.aspjpeg.com

Lycka till!

freddssiteMedlem sedan maj 2001123 inlägg
#6

Kanon...skall prova denna lite senare idag! Stort tack så länge...jag återkommer om detta fungerar och då avslutar denna sträng!

freddssiteMedlem sedan maj 2001123 inlägg
#7

När jag använder denna kod får jag följande felmedelande.

Server object error 'ASP 0177 : 800401f3'

Server.CreateObject Failed

/laddaupp.asp, line 33

Invalid ProgID. For additional information specific to this message please visit the Microsoft Online Support site located at: http://www.microsoft.com/contentredirect.asp.

Bilden kommer upp till servern men sedan får jag detta felmedd!

 
<HTML> 
<BODY BGCOLOR="#FFFFFF">

<h3>Ladda upp foto</h3>

<FORM ENCTYPE="multipart/form-data" METHOD="POST" ACTION="laddaupp.asp?spara=foto">
<TABLE CELLPADDING="3" CELLSPACING="0" BORDER="0" BGCOLOR="#EEEEEE">
<TR><TD>Image:</TD><TD><INPUT TYPE=FILE NAME="file1" size="20"></TD></TR>
</TD></TR>

<TR><TD COLSPAN="2"><INPUT TYPE="SUBMIT" VALUE="Upload"></TD></TR>
</TABLE>
</FORM>
</BODY> 
</HTML>

<% If Request.Querystring("spara") = "foto" Then %>

<%
Set Upload = Server.CreateObject("Persits.Upload")
Upload.Save(Server.MapPath("\uploadbilder\"))
Set File = Upload.Files("file1")
	
If Not File Is Nothing Then
        ' Är det en bild?
	If File.ImageType = "UNKNOWN" Then
		File.Delete
		Response.Write("Filen du försöker ladda upp är ingen bild...")
		Response.End
	End If

	' Skapa AspJpeg Objekten
	Set JpegPic	= Server.CreateObject("Persits.Jpeg")
	Set JpegTmb	= Server.CreateObject("Persits.Jpeg")

        ' Välj ett filnamn (File.Name är 'originalnamnet') och spara filen
	FilNamn = "Min_Fil" & File.Ext
	File.Move Server.MapPath("\uploadbilder") & "\" & FilNamn
	
        ' Öppna den uppladdade bilden för att skala om den:
        JpegPic.Open Server.MapPath("\uploadbilder\pics") & "\" & FilNamn
        ' Om storleken ä'r större än 547px, skala ner den till 547px, behåll proportionerna.
	If JpegPic.Width > 450 Then
		mWidth = 450
		JpegPic.PreserveAspectRatio = True
		JpegPic.Width = mWidth
	End If
        ' Spara bilden
	JpegPic.Save Server.MapPath("\uploadbilder\pics") & "\" & FilNamn

	tWidth	= JpegPic.Width
	tHeight	= JpegPic.Height
	
        ' Öppna bilden en gång till för att skapa miniatyr:			
	JpegTmb.Open Server.MapPath("\uploadbilder\pics") & "\" & FilNamn
	mHeight = 85
	JpegTmb.PreserveAspectRatio = True
	JpegTmb.Height = mHeight
        'Skala ner bilden och beskär om bredden är mer än 110px.
	If JpegTmb.Width > 110 Then
		JpegTmb.Crop 0, 0, 110, 85
	End If
        ' Spara miniatyr
	JpegTmb.Save Server.MapPath("\uploadbilder\pics\thumbs") & "\" & FilNamn
	
        ' Stäng objekten
	Set JpegPic		= Nothing
	Set JpegTmb		= Nothing
End If
Set Upload		= Nothing
%>
<% End if %>
MickeA.comMedlem sedan feb. 20034 441 inlägg
#8

Hmm, ok.
Rad 33 i ditt script, vilken av dessa är det?

Set Upload = Server.CreateObject("Persits.Upload")
Set JpegPic	= Server.CreateObject("Persits.Jpeg")
Set JpegTmb	= Server.CreateObject("Persits.Jpeg")

Känns som om servern inte har AspJpeg installerat.
Vad händer om du strunar i Jpeg-delen och BARA använder dig av själva uploadkomponenten?
Att bilden laddasupp tyder just på detta, uploaden kan köras men när bilden är klar och du skapar den första Jpegkomponenten, så blir det fel.

Kolla med ditt webhotell, men jag misstänker att så är fallet.

freddssiteMedlem sedan maj 2001123 inlägg
#9

När kah använder detta, så blir vissa bilder delvis gråa. Om man laddar upp en bild på tex 600x332 så skall den minskas till 400pix med ratio på höjd. De funkar jätte bra! Men laddar man en bild på 418x452 så skall den minskas till 400 med ratio på höjd. Då blir ca 2/3 delar grå av del bilden. Har provat massa saker men u blir jag galen och hoppas på hjälp!!!!

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

Upload.OverwriteFiles = False
Upload.SetMaxSize 100000, False

Upload.Save(Server.MapPath("/uploadbilder/"))
Set File = Upload.Files("file")
	
If Not File Is Nothing Then
' Är det en bild?
	If File.ImageType = "UNKNOWN" Then
	File.Delete
	Response.Write("Filen du försöker ladda upp är ingen bild...")
	Response.End
End If

' Skapa AspJpeg Objekten
	Set JpegPic	= Server.CreateObject("Persits.Jpeg")
	Set JpegTmb	= Server.CreateObject("Persits.Jpeg")
	
 ' Välj ett filnamn (File.Name är 'originalnamnet') och spara filen
	FilNamn = Upload.Files("file").ExtractFileName 
	File.Move Server.MapPath("uploadbilder") & "/" & FilNamn
	
  ' Öppna den uppladdade bilden för att skala om den:
        JpegPic.Open Server.MapPath("uploadbilder") & "/" & FilNamn

' Om storleken ä'r större än 400px, skala ner den till 400px, behåll portionerna.
	If JpegPic.Width > 400 Then
		mWidth = 400
		JpegPic.PreserveAspectRatio = True
		JpegPic.Width = mWidth
	End If

' Spara bilden
	JpegPic.Save Server.MapPath("/uploadbilder") & "/" & FilNamn

	tWidth	= JpegPic.Width
	tHeight	= JpegPic.Height
	
' Öppna bilden en gång till för att skapa miniatyr:			
	JpegTmb.Open Server.MapPath("/uploadbilder/") & "/" & FilNamn
	mHeight = 85
	JpegTmb.PreserveAspectRatio = True
	JpegTmb.Height = mHeight

'Skala ner bilden och beskär om bredden är mer än 110px.
	If JpegTmb.Width > 110 Then
		JpegTmb.Crop 0, 0, 110, 85
	End If

' Spara miniatyr
	JpegTmb.Save Server.MapPath("/uploadbilder/pics") & "/" & FilNamn
	

' Stäng objekten
	Set JpegPic		= Nothing
	Set JpegTmb		= Nothing
End If

Set Upload		= Nothing

end if
%>
MickeA.comMedlem sedan feb. 20034 441 inlägg
#10

"Har provat massa saker, men ingenting fungerar..."

Vad exakt har du provat för saker.
Det är bra att du talar om vad du gjort, så är det lättare att komma med ett vettigt svar.

Ditt problem kan bero på att bredd resp. höjd ligger för nära varandra, samt att bilden i ditt exempel är stående och inte liggande, som den andra.

Testa att göra en check:

If JpegPic.Width > JpegPic.Height Then
   'Liggande bild.
   If JpegPic.Width > 400 Then
	mWidth = 400
	JpegPic.PreserveAspectRatio = True
	JpegPic.Width = mWidth
   End If
Else
   'Stående bild
   If JpegPic.Height > 470 Then
	mHeight = 400
	JpegPic.PreserveAspectRatio = True
	JpegPic.Height = mHeight
   End If
End If

Har inte haft samma problem själv, så vet inte exakt varför du får en "grå" bild.
Bifoga gärna originalbild och den bild som skapas, så jag kan se exakt vad som händer.

bwcMikkeMedlem sedan okt. 2004159 inlägg
#11

En annan utväg är att använda ASP.NET om du kan något om det. Där finns färdiga funktioner för det du vill.

freddssiteMedlem sedan maj 2001123 inlägg
#12

hur använder jag det då? finns det bra guider/hemsidor med kod exempel!?!

emissionMedlem sedan dec. 19996 721 inlägg
#13

Nej, att gå över till ASP.NET är en gigantisk omväg!

Som sagt, vad exakt har du provat för saker?

130 ms totalt · 3 externa anrop · v20260731065814-full.91fd2ad2
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
127 ms — hämta tråd, inlägg och bilagor (db)