Jag har gjort så att bilden man laddar upp ska skäras om och sparas med orginala namnet. Men jag har ej kunnat lösa det. Testade och ha & File.FileName men det var inte rätt.
<form name="frmUpload" method="post" enctype="multipart/form-data" action="?Upload=newpic">
<input type="file" name="PicName" style="width: 480;"></td>
<p></p>
<p></p>
<input type="submit" value="Ladda upp" style="width: 480;">
</form>
<%
Set ObjConn = Server.CreateObject("ADODB.Connection")
ObjConn.Open = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="& Server.MapPath("xxxx")
' Länken i formen.
IF Request.Querystring("Upload")="newpic" then
Set Upload = Server.CreateObject("Persits.Upload")
' Use AspJpeg to resize image
Set Jpeg = Server.CreateObject("Persits.Jpeg")
' Capture and save uploaded image to the same directory as script
Upload.SaveVirtual "../_images/_bilder"
For Each File in Upload.Files
If File.Size > 580000 Then
Response.Write "Filen är för stor"
File.Delete
Response.End
End If
If File.ImageType <> "JPG" Then
Session("Error") = "Bilden du valde var inte JPG format!"
File.Delete
Response.End
End If
Jpeg.Open File.Path
L = 750
Jpeg.Quality = 100
Jpeg.Width = L
Jpeg.Height = Jpeg.OriginalHeight * L / Jpeg.OriginalWidth
Jpeg.Save(Server.MapPath("../_images/_bilder") & "\" & File.ExtractFileName)
Next
' Kontrollerar vilken man har valt och sen sparar den.
ObjConn.Execute("Insert into bilder (bild, bildthumb) values ('../_images/_bilder/& File.FileName.jpg', '../_images/_bilder/& File.FileName_thumb.jpg')")
ObjConn.Close
Set ObjConn = Nothing
Session("Finish") = "Nu är bilden upladdad!"
Response.Redirect "Upload.asp"
End if
%>
Men felet i ditt fall är att du försöker använda File.Name utanför din loop.
Eftersom du loopar igenom Upload.Files måste du köra frågan (sql insert) för varje bild, inuti loopen.
Inte bara det, men din SQL fråga kommer aldrig att fungera på det sätt du vill heller:
ObjConn.Execute("Insert into bilder (bild, bildthumb) values ('../_images/_bilder/& File.FileName.jpg', '../_images/_bilder/& File.FileName_thumb.jpg')")
Det den sparar ner är:
../_images/_bilder/& file.FileName.jpg
i fältet vilket du kanske hade hellre velat ha:
../_images/_bilder/bildensnamn.jpg
bryt Strängen och få igång asp objektet file, placera in file innanför loopen och fixar följande fel:
objektet file har inte någon property som heter FileName_thumb.jpg heller
ObjConn.Execute("Insert into bilder (bild, bildthumb) values ('../_images/_bilder/& File.FileName.jpg', '../_images/_bilder/& File.FileName_thumb.jpg')")
Inom "Next" då?
voigtann1:
Förstog inte riktigt vad du mena med det.
"bryt Strängen och få igång asp objektet file, placera in file innanför loopen och fixar följande fel:
objektet file har inte någon property som heter FileName_thumb.jpg heller"
<form name="frmUpload" method="post" enctype="multipart/form-data" action="?Upload=newpic">
<input type="file" name="PicName" style="width: 480;"></td>
<p></p>
<p></p>
<input type="submit" value="Ladda upp" style="width: 480;">
</form>
<%
Set ObjConn = Server.CreateObject("ADODB.Connection")
ObjConn.Open = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="& Server.MapPath("xxxx")
' Länken i formen.
IF Request.Querystring("Upload")="newpic" then
Set Upload = Server.CreateObject("Persits.Upload")
' Use AspJpeg to resize image
Set Jpeg = Server.CreateObject("Persits.Jpeg")
' Capture and save uploaded image to the same directory as script
Upload.SaveVirtual "../_images/_bilder"
For Each File in Upload.Files
If File.Size > 580000 Then
Response.Write "Filen är för stor"
File.Delete
Response.End
End If
If File.ImageType <> "JPG" Then
Session("Error") = "Bilden du valde var inte JPG format!"
File.Delete
Response.End
End If
Jpeg.Open File.Path
L = 750
Jpeg.Quality = 100
Jpeg.Width = L
Jpeg.Height = Jpeg.OriginalHeight * L / Jpeg.OriginalWidth
Jpeg.Save(Server.MapPath("../_images/_bilder") & "\" & File.ExtractFileName)
' Kontrollerar vilken man har valt och sen sparar den.[b]
ObjConn.Execute("INSERT INTO bilder " &_
"(bild, bildthumb) " &_
"VALUES " &_
"(" &_
"'../_images/_bilder/" & File.FileName & ".jpg', " &_
"'../_images/_bilder/" & File.FileName & "_thumb.jpg'" &_
")")[/b]
ObjConn.Close
Next
Set ObjConn = Nothing
Session("Finish") = "Nu är bilden upladdad!"
Response.Redirect "Upload.asp"
End if
%>
Men du måste fortfarande skapa tumnagel, spara den med nytt namn och sen hänsvisa till _rätt_ filnamn i din sqlfråga.
jag gjorde ett annat exempel, bryter ut så att man kanske skulle kunna använda detta på fler än ett ställe:
<%
Dim sSaveFolder
sSaveFolder = "../_images/_bilder/"
Set ObjConn = Server.CreateObject("ADODB.Connection")
ObjConn.Open = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="& Server.MapPath("../_databas/lidingovasadb.mdb")
' Länken i formen.
IF Request.Querystring("Upload")="newpic" then
Set Upload = Server.CreateObject("Persits.Upload")
' Use AspJpeg to resize image
Set Jpeg = Server.CreateObject("Persits.Jpeg")
' Capture and save uploaded image to the same directory as script
Upload.SaveVirtual sSaveFolder
For Each File in Upload.Files
If File.Size > 580000 Then
Response.Write "Filen är för stor"
File.Delete
Response.End
End If
If File.ImageType <> "JPG" Then
Session("Error") = "Bilden du valde var inte JPG format!"
File.Delete
Response.End
End If
Dim sOrginalFile, sThumbnail
'Save the file with a new time, orginal_filename.jpg
sOrginalFile = Resize(Jpeg, file, "orginal", null, sSaveFolder)
'Resize the image and saves it like: thumb_filename.jpg
sThumbnail = Resize(Jpeg, file, "thumb", 750, sSaveFolder)
'save it to the database
ObjConn.Execute("Insert into bilder (bild, bildthumb) values ('" & sOrginalFile & "', '" & sThumbnail & "')")
'Delete Original file, we allready saved it with the resize function, and renamed it.
File.Delete
Next
Session("Finish") = "Nu är bilden upladdad!"
ObjConn.Close
Set ObjConn = Nothing
Set Upload = Nothing
Set Jpeg = Nothing
Response.Redirect "Upload.asp"
End if
Function Resize(objJpeg, file, name, size, Folder)
objJpeg.Open File.Path
objJpeg.Quality = 100
If IsNull(size) Then
objJpeg.Width = size
objJpeg.Height = objJpeg.OriginalHeight * size / objJpeg.OriginalWidth
End If
objJpeg.Save(Server.MapPath(Folder) & name & "_" & File.ExtractFileName)
'Returns the filePath for the image
Resize = Folder & name & "_" & File.ExtractFileName
End Function
%>
annan lösning, men i princip samma sak.
Sparar om orginal bilden och lägger in ett prefix på den samt skapar en thumb_ prefix. sen skulle den kunna skapa en del andra skalningar utan att behöva göra en massa extra kod.
273 ms totalt · 4 externa anrop · v20260731065814-full.86ec41c2