webForumDet fria alternativet

Aspupload + Aspjpeg med flera filer in i databas

ASP

8 svar · 561 visningar · startad av eee

Medlem sedan sep. 2005100 inlägg
Frågan#1

Jag pillar med Aspupload och Aspjpeg och har efter ca 8 timmars sökning i forumet och googling inte lyckats lösa det.

Jag har ett formulär där 2 filer laddas upp och lite info matas in om filerna.

Sedan skall sidan som tar emot formen ladda upp filerna (funkar fint), förminska bilderna (funkar fint) och därefter lägga in allting i en databas enligt följande:

FILE1 FILE2 beskrivningFIL1 beskrivningFIL2 DATUM

Koden just nu ser ut enligt följande:

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

' Save uploaded files
Upload.Save(Server.MapPath("/") & "\test")
' Display paths of uploaded files
For Each File in Upload.Files %>

 <%

' Create instance of AspJpeg
Set Jpeg = Server.CreateObject("Persits.Jpeg")
Jpeg.PreserveAspectRatio = True
Jpeg.quality = 100
' Open source image
Jpeg.Open file.path

' New width
'L = 300

' Resize, preserve aspect ratio
'Jpeg.Width = L
'Jpeg.Height = Jpeg.OriginalHeight * L / Jpeg.OriginalWidth
Jpeg.Width = 350

' create thumbnail and save it to disk
Jpeg.Save file.path
%>
   <%
 Next

%>

Jag har lyckats mata in all info förutom filnamnen i databasen. Kör jag koden för att lägga in info i databasen efter For Each File in Upload.Files så blir det ju 2 poster, en för vardera filnamn. Jag behöver ha bägge filnamnen på samma post i databasen.
Jag får ju ut filnamnet med <% = File.ExtractFileName %> men då blir det ju som sagt bara ena filen som läggs in på ena raden och den andra på en ny rad.

Någon som vet hur jag skall göra för att kunna lägga in båda filnamnen i samma post i databasen?

Medlem sedan juni 20019 519 inlägg
#2
<%
Set Upload = Server.CreateObject("Persits.Upload")
' Save uploaded files
Upload.Save(Server.MapPath("/") & "\test")
' Display paths of uploaded files
For Each File in Upload.Files
	' Create instance of AspJpeg
	Set Jpeg = Server.CreateObject("Persits.Jpeg")
	Jpeg.PreserveAspectRatio = True
	Jpeg.quality = 100
	Jpeg.Open file.path
	Jpeg.Width = 350
	Jpeg.Save file.path
	'DB Kopplingen och använd SQL frågan:
	'SQL = "INSERT INTO tblPictures (imgName) Values('" & File.ExtractFileName & "')"
 Next
%>

Det är en snabb skiss men en SQL fråga liknande den ovan bör räcka om jag har förstått din fråga rätt?

Medlem sedan sep. 2005100 inlägg
#3

Tack för snabbt svar voigtann1, innebär inte den koden att för varje ny fil skapas en ny post med ett nytt unikt id (räknare & primärnyckel) för varje bild? jag vill bara ha 1 id för 2 bilder?

Medlem sedan juni 20019 519 inlägg
#4

Vill du koppla bilderna till en annat ID? Så får du referera det till den nycklen.

Exempelvis:
tblPictureInfo
-- Id
-- PictureInfo

tblPictures
-- InfoId
-- ImagePath

Där du sparar posten med informationen om bilden/bilderna i din tblPictureInfo
Hämta ut ID "SELECT @@IDENTITY FROM tblPictures" så du vet vilket ID din text har och refera det ID till bilderna... ?

Medlem sedan sep. 2005100 inlägg
#5

Men innan datan skall matas in finns ju inget att referera till.

Formuläret ser ut såhär:
http://www.mittip.se/form.jpg

Och det skall adderas enligt följande i tabellen:
id file1 file2 namn1 namn2

Mao finns inget att referera till, eller är det jag som missuppfattat dig?

Medlem sedan juni 20019 519 inlägg
#6

Då är det ju bara att förlänga din INSERT sträng med två filer och två namn...

Medlem sedan sep. 2005100 inlägg
#7

Jo jag tänkte att man kunde göra såhär:

<FORM NAME="MyForm" METHOD="POST" ENCTYPE="multipart/form-data" ACTION="finish.asp">
 <%
Set Upload = Server.CreateObject("Persits.Upload")

' Save uploaded files
Upload.Save(Server.MapPath("/") & "\test")
' Display paths of uploaded files
sqlpics = ""
first = "true"
For Each File in Upload.Files %>

 <%

' Create instance of AspJpeg
Set Jpeg = Server.CreateObject("Persits.Jpeg")
Jpeg.PreserveAspectRatio = True
Jpeg.quality = 100
' Open source image
Jpeg.Open file.path

' New width
'L = 300

' Resize, preserve aspect ratio
'Jpeg.Width = L
'Jpeg.Height = Jpeg.OriginalHeight * L / Jpeg.OriginalWidth
Jpeg.Width = 350

' create thumbnail and save it to disk
Jpeg.Save file.path
%>
<input type="text" value="<% = File.ExtractFileName %>" name="bild1" size="20">

   <%
 Next

%>
<input type="submit" value="Skicka" name="Submit">
</form>

Så förhandsgranskar man allt och så klickar man på skicka och skickar formen till den slutgiltiga sidan som lägger in all data från formuläret i databasen. Problemet är ju dock att båda filnamnen får "bild1" som namn på sitt formulärfält vilket gör att jag inte kan lägga in dom i 2 olika kolumner på samma post i databasen.
Och <%=Upload.Form("FILE1")%> går ju inte att använda för att plocka ut filnamnet heller :(

Sammanfattning av problemet: Namnet på bildfilen hämtas ju med <% = File.ExtractFileName %> så jag kan inte ha samma insertsträng för båda bilderna :(

Medlem sedan sep. 2005100 inlägg
#8

Det löste sig =)

<% = File.Name %> skriver ut FILE1 och FILE2 vilket gör att jag nu får unika fält för varje uppladdad bild, stort tack för inputen tidigare voigtann1 :)

Medlem sedan juni 20019 519 inlägg
#9

eee skrev:

Det löste sig =)

<% = File.Name %> skriver ut FILE1 och FILE2 vilket gör att jag nu får unika fält för varje uppladdad bild, stort tack för inputen tidigare voigtann1 :)

klart den gör ;)

"For Each File in Upload.Files" :)

260 ms totalt · 4 externa anrop · v20260731065814-full.1dc6f849
124 ms — deklarationer (db)
0 ms — hämta statistik (cache)
132 ms — hämta tråd, inlägg och bilagor (db)
118 ms — ändringar (db)