webForumDet fria alternativet

AspJpeg ladda up fler filer samtidigt.

ASP

10 svar · 1 031 visningar · startad av Akerlundh

Medlem sedan maj 20031 682 inlägg
Frågan#1

Jag hittade en kod för upp laddning utav bilder med AspJpeg här på forumet.

Men jag får det inte riktigt att funka.
Jag vill ladda upp flera bilder samtidigt och sen spara information om bilden (Picinfo) om alla samtidigt. Vet inte riktigt om ni hänger med.

Men iaf, när jag använder mig utav denna koden så funkar det inte riktigt.
Alla bilder laddas upp och sparas i vanligt format.
Men bara den första bilden sparas i vanligt format och i en thumbnail samt sparar bild informationen (Picinfo)

Vad ska man ändra i denna koden för att det ska funka för alla bilder?

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

Path = "....\img\"

Count = Upload.Save(Path)

If Count = 0 Then
  Response.Write "No images selected."
  Response.End
Else

  Set File = Upload.Files(1)

	File.move "...\img\" & File.ExtractFileName

  	If File.ImageType <> "UNKNOWN" Then

    Set jpeg = Server.CreateObject("Persits.Jpeg")

    jpeg.Open( File.Path )

    jpeg.PreserveAspectRatio = True

    L = 78

    jpeg.Width = L

    SavePath = "....\thumb\small_" & File.ExtractFileName

    If UCase(Right(SavePath, 3)) <> "JPG" Then
      SavePath = SavePath & ".jpg"
    End If

    jpeg.Save SavePath

    ' Save both images in the database along with description.

	Set conn = Server.CreateObject("ADODB.Connection")
	conn.Open "driver={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("../../data/database.mdb")&";pwd=...."
	set rs= Server.CreateObject("ADODB.Recordset")
	SQL= "SELECT * FROM tblPICS"
	rs.Open SQL,Conn,1,2
	rs.AddNew

    ' Use File.Binary to access binary data of uploaded file.
    rs("original_image")= Upload.Files(1).Filename
    Set ThumbFile = Upload.OpenFile(SavePath)
    rs("thumbnail") = "small_" & Upload.Files(1).Filename
    rs("picinfo") = Upload.Form("picinfo")
    rs("category") = Upload.Form("cat")
    rs.Update
    rs.Close
    Set rs = Nothing
	Conn.Close : Set Conn = nothing 

  Else
    Response.Write "This is not a valid image."
    Response.End
  End If
End If
%>

Sen i formuläret heter fälten FILE1 , FILE2 osv och informations fältet heter bara Picinfo.

Medlem sedan juni 20019 519 inlägg
#2

http://www.aspjpeg.com/manual_03.html har du ett exakt samma exempel på vad du är ute efter. Det är bara att lägga in samma kod som du använder när du laddar upp en fil.

Medlem sedan maj 20031 682 inlägg
#3

voigtann1 skrev:

http://www.aspjpeg.com/manual_03.html har du ett exakt samma exempel på vad du är ute efter. Det är bara att lägga in samma kod som du använder när du laddar upp en fil.

Hur menar du nu?

För det jag vill göra är ladda upp fler bilder samtidigt och då ska det blir thumbnails utav alla och bild informationen ska sparas för varje bild också.

Medlem sedan juni 20019 519 inlägg
#4

Akerlundh skrev:

Hur menar du nu?

För det jag vill göra är ladda upp fler bilder samtidigt och då ska det blir thumbnails utav alla och bild informationen ska sparas för varje bild också.

Ja? I manual exemplet +ASPUpload manualen står det hur man kan göra. Jag skulle gissa utan att ens har kört ASPupload eller ASPJPEG att:

Dim sPath, SavePath

sPath = Server.MapPath("....\img\")

Set Upload = Server.CreateObject("Persits.Upload")
' Save uploaded files
Upload.Save sPath

' Display paths of uploaded files
For Each File in Upload.Files
	Response.Write File.Path & "<BR>"
	If File.ImageType <> "UNKNOWN" Then
		' Create instance of AspJpeg object
		Set jpeg = Server.CreateObject("Persits.Jpeg")

		' Open uploaded file
		jpeg.Open(File.Path)

		' Resize image according to "scale" option.
		' We cannot use Request.Form, so we use Upload.Form instead.
		jpeg.Width = jpeg.OriginalWidth * Upload.Form("scale") / 100
		jpeg.Height = jpeg.OriginalHeight * Upload.Form("scale") / 100

		SavePath = sPath & "\small_" & File.ExtractFileName

		' AspJpeg always generates thumbnails in JPEG format.
		' If the original file was not a JPEG, append .JPG ext.
		If UCase(Right(SavePath, 3)) <> "JPG" Then
			SavePath = SavePath & ".jpg"
		End If

		jpeg.Save SavePath

		'SQL
		'Orginal path: sPath & File.ExtractFileName
		'Thumbnail path: Upload.OpenFile(SavePath)
		Set jpeg = Nothing
	End If
Next

Fungera att skapa thumb + ladda upp orginal bilden. Sen är det bara att göra rätt DB koppling till din databas och använda dig av

'Orginal path: sPath & File.ExtractFileName
'Thumbnail path: Upload.OpenFile(SavePath)

Strängarna som är bortkommenterade just nu.

Medlem sedan maj 20031 682 inlägg
#5

Den koden funkade nästan hel perfekt efter lite små ändringar!

Men om jag laddar upp två bilder samtidigt så får bägge bilderna samma bild information. Hur ändrar jag löser jag detta enklast?

Medlem sedan juni 20019 519 inlägg
#6

nej det får du inte... ASPupload har stöd för flera filer. eller vad menar du med "bild information"?

Medlem sedan maj 20031 682 inlägg
#7

voigtann1 skrev:

nej det får du inte... ASPupload har stöd för flera filer. eller vad menar du med "bild information"?

Ja när jag laddar upp bildena så har jag en ruta där man kan göra fem uppladdningar samtidigt. Sen bredvid blädra rutan för varje upp laddning har jag ett fält där man kan skriva en bild beskrivning. Som sedan sparas i tblPICS >> picinfo. Men jag vet inte riktigt hur jag ska göra för för att varje bild ska få med informationen för nu får varje bild endast med informationen som står i första fältet och inte det som står bredvid.

Hänger du med?

Medlem sedan juni 20019 519 inlägg
#8

Det skall ju inte vara svårt.

Du kan ju ha en räknare och ha exempelvis namn på dina descriptions:
<input type="text" name="description_0"> för bild 1, <input type="text" name="description_1"> för bild 2 osv. och när du loopar igenom "for each file in ..." så har du en räknare som lägger till 1 i värde hela tiden i slutet av loopen.

Medlem sedan maj 20031 682 inlägg
#9

Nu hänger jag inte med.

upload.asp

<FORM ENCTYPE="multipart/form-data" METHOD="POST" ACTION="upload2.asp">
Image:<br><INPUT TYPE=FILE NAME="FILE1"><br>
Description:<br><TEXTAREA NAME="picinfo_1"></TEXTAREA><br>
<br>
Image:<br><INPUT TYPE=FILE NAME="FILE2"><br>
Description:<br><TEXTAREA NAME="picinfo_2"></TEXTAREA><br>
<br>
Image:<br><INPUT TYPE=FILE NAME="FILE3"><br>
Description:<br><TEXTAREA NAME="picinfo_3"></TEXTAREA><br>
<br>
Image:<br><INPUT TYPE=FILE NAME="FILE4"><br>
Description:<br><TEXTAREA NAME="picinfo_4"></TEXTAREA><br>
<br>
<INPUT TYPE="SUBMIT" VALUE="Upload">
</FORM>

upload2.asp

<%

Dim sPath, SavePath

sPath = Server.MapPath("img\")

Set Upload = Server.CreateObject("Persits.Upload")
' Save uploaded files
Upload.Save sPath

' Display paths of uploaded files
For Each File in Upload.Files
	Response.Write File.Path & "<BR>"
	If File.ImageType <> "UNKNOWN" Then
		' Create instance of AspJpeg object
		Set jpeg = Server.CreateObject("Persits.Jpeg")

		' Open uploaded file
		jpeg.Open(File.Path)

		' Resize image according to "scale" option.
		' We cannot use Request.Form, so we use Upload.Form instead.
		
		jpeg.PreserveAspectRatio = True

	    L = 78

		jpeg.Width = L

		SavePath = sPath & "\small_" & File.ExtractFileName

		' AspJpeg always generates thumbnails in JPEG format.
		' If the original file was not a JPEG, append .JPG ext.
		If UCase(Right(SavePath, 3)) <> "JPG" Then
			SavePath = SavePath & ".jpg"
		End If

		jpeg.Save SavePath

		
			Set conn = Server.CreateObject("ADODB.Connection")
			conn.Open "driver={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("../../data/database.mdb")&";pwd=xxxxx"
				set rs= Server.CreateObject("ADODB.Recordset")
				SQL= "SELECT * FROM tblPICS"
					rs.Open SQL,Conn,1,2
					rs.AddNew
						rs("original_image")= File.ExtractFileName
						rs("thumbnail") = "small_" & File.ExtractFileName	
						rs("picinfo") = Upload.Form("picinfo")
						rs("category") = Upload.Form("cat")
					rs.Update
			rs.Close : Set rs = Nothing
			Conn.Close : Set Conn = nothing 
			
			
		Set jpeg = Nothing
		
	End If
Next
%>

Det är ju något som måste ändras i denna kod då eller?

rs("picinfo") = Upload.Form("picinfo")
Medlem sedan juni 20019 519 inlägg
#10

Nej

<%

Dim sPath, SavePath

sPath = Server.MapPath("img\")

Set Upload = Server.CreateObject("Persits.Upload")
' Save uploaded files
Upload.Save sPath

[b]dim i
i = 1[/b]

' Display paths of uploaded files
For Each File in Upload.Files
	Response.Write File.Path & "<BR>"
	If File.ImageType <> "UNKNOWN" Then
		' Create instance of AspJpeg object
		Set jpeg = Server.CreateObject("Persits.Jpeg")

		' Open uploaded file
		jpeg.Open(File.Path)

		' Resize image according to "scale" option.
		' We cannot use Request.Form, so we use Upload.Form instead.
		
		jpeg.PreserveAspectRatio = True

	    L = 78

		jpeg.Width = L

		SavePath = sPath & "\small_" & File.ExtractFileName

		' AspJpeg always generates thumbnails in JPEG format.
		' If the original file was not a JPEG, append .JPG ext.
		If UCase(Right(SavePath, 3)) <> "JPG" Then
			SavePath = SavePath & ".jpg"
		End If

		jpeg.Save SavePath

		
			Set conn = Server.CreateObject("ADODB.Connection")
			conn.Open "driver={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("../../data/database.mdb")&";pwd=xxxxx"
				set rs= Server.CreateObject("ADODB.Recordset")
				SQL= "SELECT * FROM tblPICS"
					rs.Open SQL,Conn,1,2
					rs.AddNew
						rs("original_image")= File.ExtractFileName
						rs("thumbnail") = "small_" & File.ExtractFileName	
						rs("picinfo") = Upload.Form("picinfo[b]_" & i[/b])
						rs("category") = Upload.Form("cat")
					rs.Update
			rs.Close : Set rs = Nothing
			Conn.Close : Set Conn = nothing 
			
			
		Set jpeg = Nothing
		
	End If
	[b]i = i + 1[/b]
Next
%>

Eller "ännu" bättre eftersom du har ett name="fileX" på dina upload så kan du använda dig av: file.Name om jag förstå http://www.aspupload.com/object_formitem.html rätt och då kan du använda den som en id istället:

rs("picinfo") = Upload.Form("picinfo_" & Replace(File.Name,"FILE",""))

kanske.

Medlem sedan maj 20031 682 inlägg
#11

Jag testade den koden du skrev först. Men ska testa den andra koden sen men nu tänker jag ta en liten paus ifrån kodandet. :)

Men tack för all hjälp nu funkar det iaf!

267 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
126 ms — deklarationer (db)
0 ms — hämta statistik (cache)
138 ms — hämta tråd, inlägg och bilagor (db)
124 ms — ändringar (db)