Hej Du kan ju istf _or och _th även lägga till datum/tid så att bilden får en unik datumstämpel tex: Vet ej hur jag skall få till det med datumet. Har aldrig jobbar med den kontrollen, men vad betyder denna rad: Tack Uffe för inlägget.Uppladdnning av bilder till databas
Har en bilduppladdningsgrej där jag laddar upp text och bild och förändrar storleken med AspImage. Jag skickar upp en bild så sparas bildens länk i databasen med ett tillägg _or samtidigt som det sparas två bilder på servern med ändelsen _or samt _th.
Jag har satt i databasen att bilder får ha samma filnamn vid uppladdning.
Sist jag laddade upp en bild så hade jag förmodligen samma namn på en bild som jag tidigare laddat upp och det innebar att en tidigare artikel fick samma bild som den senast uppladdade.
Hur löser jag det bäst?
Så här ser en del av koden ut som laddar upp bilden.
<%
If Err Then
Response.Write("<b>Wrong selection : </b>" & Err.description)
Else
For each file In mySmartUpload.Files
If not file.IsMissing Then
file.SaveAs("/web/Upload/" & file.FileName)
OrigFileName = file.FileName
Set Image = Server.CreateObject("AspImage.Image")Image.AutoClear=false
if Image.LoadImage (Server.MapPath ("/web/Upload/" & OrigFileName)) then
aspimage_OK = aspimage(1, 80, 230, 180, "_or.")
if aspimage_OK then
'---------Stor bild OK
aspimage_OK = aspimage(1, 80, 90, 70, "_th.")
End If
else
response.write "Kunde ej ladda upp fil!"
End If
End If
Next
if aspimage_OK then
'---------Liten bild OK
call insertidb(ChangedName, mySmartUpload.Form("MyText"), mySmartUpload.Form("MyTextArea"))
end if
End If
%>
Sen använder jag en includefil som sparar bilden xxx_or.jpg i databasen...
Nån som har ett tips hur jag skall göra för att undvika att bild som sparas skrivs över av annan, går det komplettera med id från databasen eller???Sv: Uppladdnning av bilder till databas
"_or20021002135423"
Det fungerar om du inte laddar upp fler bilder än 1/sek
<code>
iYear = Year(sDate)
iMonth = Month(sDate)
iDay = Day(sDate)
iHour = Hour(sDate)
iMinute = Minute(sDate)
iSecond = Second(sDate)
str = str & iYear
str = str & Right("0" & iMonth,2)
str = str & Right("0" & iDay,2)
str = str & Right("0" & iHour,2)
str = str & Right("0" & iMinute,2)
str = str & Right("0" & iSecond,2)
str= "_or" & str
</code>Sv: Uppladdnning av bilder till databas
Laddar allltså upp bild till servern med AspSmartupload där AspImage tar hand om filen och sparar om den till en _or.jpg och en till _th.jpg.
Om jag råkar ladda upp en bild med samma namn som jag laddat upp tidigare ändras bilden på en gammal artikel till den senast uppladdade.
Frågan var alltså hur kan jag få med datumet när bilden sparas.
Här kommer först AspImagekoden som includeras i Upload-filen.
<%
Function aspimage (ImageFormat, JPEGQuality, NewWidthIfWide, NewHeightIfHigh, FileChangedName)
Dim OrigWidth, OrigHeight, Omv_faktor, NewWidth, NewHeight, lib
OrigWidth = Image.MaxX
OrigHeight = Image.MaxY
Omv_faktor = Round(OrigWidth/OrigHeight,2)
if OrigWidth > NewWidthIfWide then '---------Bild skall forminskas
if Omv_faktor >= 1 then '---------Liggande bild
NewWidth = NewWidthIfWide
NewHeight = Int(NewWidthIfWide/Omv_faktor)
else '---------Stående bild
NewHeight = NewHeightIfHigh
NewWidth = Int(Omv_faktor*NewHeightIfHigh)
end if
else
NewHeight = OrigHeight
NewWidth = OrigWidth
end if
Image.ResizeR NewWidth, NewHeight
Image.ImageFormat = ImageFormat
Image.JPEGQuality = JPEGQuality
ChangedName=Replace(OrigFileName, ".", FileChangedName)
ChangedName=Replace(ChangedName, ".bmp", ".jpg")
ChangedName=Replace(ChangedName, ".png", ".jpg")
ChangedName=Replace(ChangedName, ".tga", ".jpg")
ChangedName=Replace(ChangedName, ".pcx", ".jpg")
lib=request.servervariables ("APPL_PHYSICAL_PATH") & "web\bilder\" & ChangedName
Image.FileName = lib
if Image.SaveImage then '--------- Bild OK
%>
<p><img src="bilder/<%=ChangedName%>"><br> <font face="Verdana, Arial, Helvetica, sans-serif" size="2">BILD OK<br>
Nytt Filnamn = <%=Image.FileName%> Ny Bredd = <%=NewWidth%> Ny Höjd <%= NewHeight%><br>
<% aspimage=True
else
response.write "Fel vid sparande av fil!"
aspimage=False
end if
End Function
%>
</font>
Här är själva uploaden
<% Option explicit %>
<!-- #INCLUDE FILE="func_aspimage2.inc" -->
<!-- #INCLUDE FILE="sub_insertidb2.inc" -->
<!-- #INCLUDE FILE="sub_Show_ServerVariables.inc" -->
<HTML>
<BODY BGCOLOR="#FFFFFF">
</p>
<font face="Verdana, Arial, Helvetica, sans-serif" size="2">Aktuellt</font>
<HR>
<% aspimage_OK = true
Dim mySmartUpload,item, value, file, intCount, ChangedName
Dim Image, aspimage_OK, OrigFilePath, OrigFileName, Rubriken, Texten
Set mySmartUpload = Server.CreateObject("aspSmartUpload.SmartUpload")
mySmartUpload.AllowedFilesList = "jpg,bmp,png,tga,pcx"
mySmartUpload.MaxFileSize = 1500000
mySmartUpload.Upload
If Err Then
Response.Write("<b>Wrong selection : </b>" & Err.description)
Else
For each file In mySmartUpload.Files
If not file.IsMissing Then
file.SaveAs("/web/Upload/" & file.FileName)
OrigFileName = file.FileName
Set Image = Server.CreateObject("AspImage.Image")
Image.AutoClear=false
if Image.LoadImage (Server.MapPath ("Upload/" & OrigFileName)) then
aspimage_OK = aspimage(1, 80, 400, 260, "_or.")
if aspimage_OK then '---------Stor bild OK
aspimage_OK = aspimage(1, 80, 175, 130, "_th.")
End If
else
response.write "Kunde ej ladda upp fil!"
End If
End If
Next
if aspimage_OK then '---------Liten bild OK
call insertidb(ChangedName, mySmartUpload.Form("MyText"), mySmartUpload.Form("MyTextArea"))
end if
End If
%>
</BODY>
</HTML>
Är det någon som har igång hjärnan hur jag skall kunna lägga till datum till varje bild vore jag väldigt tacksam, min har somnatSv: Uppladdnning av bilder till databas
aspimage_OK = aspimage(1, 80, 175, 130, "_th.")
Vad är "_th." (och "_or.") för något?
Om man laddar upp en bild (bilden.jpg) byts då namnen som sparas till bilden_th.jpg och bilden_or.jpg ?
Om det är så så borde det funka om du skapar din str variabel innan du kör din aspimage funktion
<code>
iYear = Year(sDate)
iMonth = Month(sDate)
iDay = Day(sDate)
iHour = Hour(sDate)
iMinute = Minute(sDate)
iSecond = Second(sDate)
str = str & iYear
str = str & Right("0" & iMonth,2)
str = str & Right("0" & iDay,2)
str = str & Right("0" & iHour,2)
str = str & Right("0" & iMinute,2)
str = str & Right("0" & iSecond,2)
' skapa två filpåbyggnader (om mitt antagande ovan stämmer)
str_or= "_or" & str & "." ' skall vara tex: "_or200210082159."
str_th= "_or" & str & "."
'*********
' här kommer din kod (som jag "klippt bort"
' här kommer ditt avsnitt ned aspimage-funktionen
if Image.LoadImage (Server.MapPath ("Upload/" & OrigFileName)) then
aspimage_OK = aspimage(1, 80, 400, 260, str_or) ' Sätt in str_or variablen istf "_or."
if aspimage_OK then
aspimage_OK = aspimage(1, 80, 175, 130, str_th) ' Sätt in str_th variablen istf "_th."
End If
else
response.write "Kunde ej ladda upp fil!"
End If
' Hör fortsätter din kod
</code>
Hoppas jag förstått hur din kompnent funkar annars kanske du hajjar hur du skall modifuera i alla fall
/USv: Uppladdnning av bilder till databas
Tyvärr har svaret dröjt från mig på grund av sabbad hårddisk.
Du frågade om vad detta betydde.
aspimage_OK = aspimage(1, 80, 175, 130, "_th.")
1 = jpg
80 = kvalite på bilden som skapas
175 = max bredd
130 = max höjd
_th = sparar alltså en tumnagel i mitt bildbibliotek
Motsvarande med tillägget _or. skapar alltså en större bild i samma mapp. Precis som du trodde laddar jag upp en bild som i sin tur görs om och sparas i två olika storlekar.
Har försökt lägga in koden du föreslog men får bara att sidan inte kan visas. Försökte även att göra en inc-fil av den med då kom följande felmeddelande.
sDate not defined eller liknande.
Skall testa lite mer nu när jag fått igång grejorna. Kanske har du eller någon annan nåt fler tips att komma med?