timediaMedlem sedan maj 2001420 inlägg Jag har försökt tidigare men kom inte långt :l
Börjar om igen med ett "lättare" script för att försöka förstå!
Jag har följande formulär som med ASP-upload ska skicka upp en fil till servern och lägga till ett textfält i DB.
<FORM METHOD="POST" ENCTYPE="multipart/form-data" ACTION="UploadScript1.asp">
Datum ex. 2002-03-16<br>
<input type="text" name="proto" size="20"><br><br>
<b>Välj fil:</b><br>
<INPUT TYPE=FILE SIZE= 60 NAME="FILE2"><br>
<INPUT TYPE=SUBMIT VALUE="Upload">
</FORM>
UploadScript1.asp ser idag ut så här. Har försökt ändra den men DB vill inte ta emot textfältet.
Hur gör jag? Någon som kan hjälpa?
<%
Set Upload = Server.CreateObject("Persits.Upload.1")
Upload.SetMaxSize 500000, False
Count = Upload.Save(Server.MapPath("proto_up"))
%>
Du har laddad upp<% = Count %> fil.
solbulleMedlem sedan mars 20015 287 inlägg Den där koden laddar ju endast upp en fil, den har ju inget med en databas att göra.
I manualen http://www.aspupload.com/manual.html (som din kod kommer från(?)) finns det flera exempel på hur du går tillväga.
Nyckeln är nog att använda sig av Upload.Form("DESCR") och inte request.Form("DESCR")
timediaMedlem sedan maj 2001420 inlägg OK Solbulle.
Ska försöka lite till och återkommer om jag lyckas :l
timediaMedlem sedan maj 2001420 inlägg Nu har jag labbad mer men det vill sig inte :(
Här är felmeddelandet jag får:
ADODB.Recordset error '800a0cc1'
Item cannot be found in the collection corresponding to the requested name or ordinal.
/admin/Upload.asp, line 24
Line 24 är rs("filnamn") = File.Filename
Formuläret jag använder har bara två fält:
<FORM METHOD="POST" ENCTYPE="multipart/form-data" ACTION="Upload.asp">
Datum ex. 2002-03-16<br>
<input type="text" name="proto" size="20"><br><br>
<INPUT TYPE=FILE SIZE= 60 NAME="THEFILE"><br>
<INPUT TYPE=SUBMIT VALUE="Upload">
</FORM>
upload.asp ser ut såhär: (access 2000 db med tabellen aktuellt, Id=räknare, proto=text, filnamn=text)
<HTML>
<BODY>
<%
Set Upload = Server.CreateObject("Persits.Upload")
' Capture files
Upload.Save(Server.MapPath("/admin/proto_up"))
' Obtain file object
Set File = Upload.Files("THEFILE")
If Not File Is Nothing Then
' Build ODBC connection string
Connect = "driver={Microsoft Access Driver (*.mdb)};dbq=" & Server.MapPath("../../sys/komforb.mdb")
' Use ADO Recordset object
Set rs = Server.CreateObject("adodb.recordset")
' Reopen recordset to insert file
rs.Open "aktuellt", Connect, 2, 3
rs.AddNew
rs("filnamn") = File.Filename
rs("proto") = Upload.Form("proto")
rs.Update
Response.Write "File saved."
Else
Response.Write "File not selected."
End If
%></BODY>
</HTML>
Är det ingen som kan hjälpa? Jag lovar att jag har försökt mycket nu :)
erkaMedlem sedan dec. 19996 522 inlägg Många webhotell stänger av alla möjligheter att ladda upp med aspupload utom save.virtual, det är inte det som strular då ? Eller att webhotellet har tex v.2.1 och inte 3.0 som manualen på https://www.aspupload.com är för
solbulleMedlem sedan mars 20015 287 inlägg Det där verkar väldigt rätt, är du HELT säker på att namnen i databasen är rätt samt sökvägarna?
Får du upp filen om du skippar databasinlägget?
timediaMedlem sedan maj 2001420 inlägg Brukar inte ge upp, men nu är det nära :(
Webhotellet är Digikom så jag tror inte felet ligger där. Dom använder en äldre version av ASPUpload, men det borde ju fungera ändå? ((Namnen i DB är rätt och alla sökväger stämmer också)
Är det verkligen ingen som har laddad upp en fil till servern och samtidigt sparat filnamnet i DB? Om DU har gjord det, kan du inte visa mig hur du gjorde?
solbulleMedlem sedan mars 20015 287 inlägg Jag har prövast din kod rakt av, bara ändrat sökväg till databasen å det fungerar för mig.
Har du testat att sätta dina rs till fasta värden för att så at säga ringa in felet?
tex
rs("filnamn") = "timedia"
Så brukar jag göra för att kunna utesluta del efter del.
erkaMedlem sedan dec. 19996 522 inlägg Denna fungerar men är inte optimerad ännu, har inte haft tid att fixa det. Den använder sig av Save Virtual som på de flesta webhotell är det enda som tillåts när man använder ASPUpload, den här är gjort för version 2.1 av AspUpload men fungerar även på 3.0. Självklart får du modifiera den men du ser hur man kan göra, prova med save virtual !
Dim Cn, StrComment, strGalleryName, Rs, IntMappId, i, strFilNamn, strFilDesc,strErrorMess, strSQL,strFileEnd,Cnt,CntFiles
Set Cn = Server.CreateObject("ADODB.Connection")
Cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("*********")
strComment = Session("strKommentar")
strComment = replace(strComment,"'","''")
strGalleryName = Session("strGalleryName")
strGalleryName = replace(strGalleryName,"'","''")
strSQL ="INSERT INTO AlbGallerys (Fk_UserId,GalleryName,GalleryDesc,GalleryDate) "_
&"VALUES ("& Session("UserId") &",'"& strGalleryName &"','"& strComment &"',#"& Date &"#)"
Cn.Execute(strSQL)
Session.contents.Remove("strGalleryName")
Session.contents.Remove("strKommentar")
Rs = "SELECT @@identity"
Set Rs = Cn.Execute(RS)
IntMappId = Rs.Fields(0).value
Rs.Close
Set Rs = Nothing
strPath = Server.Mappath("/Foton/FotoAlbum/Album/" & IntMappId)
Set FSO = Server.CreateObject("Scripting.FileSystemObject")
'**************************************************************************
'-----KOLLA OM MAPPEN FINNS, OM DEN GÖR DET AVBRYT UPPLADDNINGEN-----------
'**************************************************************************
If FSO.FolderExists(strPath) Then
Response.Write"<b>Något gick fel</b><br>Något gick fel i uppläggningen av nytt album. Det kan bero på många saker såsom att du inte fyllt i beskrivning på bilderna eller helt enkelt att det är för många användare som just nu försöker lägga upp nya album. Var vänlig och prova igen om några minuter.<br><br>"
'**************************************************************************
'-----OM DEN INTE FANNS, LADDA UPP BILDERNA Å LÄGG TILL INFON I DB---------
'**************************************************************************
Else
Response.Write"<b>Album uppladdat</b><br><br><a href=""VisaAlbum.asp?IntAlbumId="& IntMappId &""" class=""Rightmeny"">» Kolla på albumet</a><br><br>"
Set Upload = Server.CreateObject("Persits.Upload.1")
Set Mapp = FSO.CreateFolder(strPath)
On Error Resume Next
Upload.SaveVirtual("/Foton/FotoAlbum/Album/"& IntMappId)
Upload.SetMaxSize 5000, True
For Each File in Upload.Files
strFilPath = File.Path
arrPath = split(strFilPath, "\")
strFil = arrPath(ubound(arrPath))
Cnt = Cnt + 1
strFileDesc = Upload.Form("DESCR"& Cnt &"")
strFileDesc = Replace(strFileDesc,"'","''")
strSQL = "INSERT INTO AlbPictures (Fk_GalleryId,PicImage,PicSize,PicComment) "_
&"VALUES ("& IntMappId &", '"& strFil &"', '"& File.Size &"', '"& strFileDesc &"')"
Cn.Execute(strSQL)
If Err.Number = 8 Then
strErrorMess = "<br><br><b>Obs!</b><br>En del av dina filer blev inte uppladdade pågrund av att bilden var större än tillåten storlek (<b>70Kb</b> / bild)"
End If
Next
strSQL = "UPDATE [User] Set PointPhoto = PointPhoto + "& Cnt &" WHERE Pk_UserId = "& Session("UserId") &""
Cn.Execute(strSQL)
'**************************************************************************
'TA BORT KATALOGEN/INFON FRÅN DB OM DET INTE BLEV NÅGON FIL UPPLADDAD
'**************************************************************************
Set FSO = Server.CreateObject("Scripting.FileSystemObject")
Set Folder = FSO.GetFolder(strPath)
set Files = Folder.Files
CntFiles = "0"
For Each Item In Files
CntFiles = CntFiles + 1
Next
If CntFiles = "0" Then
Folder.Delete
Set FSO = Nothing
Set Files = Nothing
Set Folder = Nothing
strSQL = "DELETE FROM AlbPictures WHERE Fk_GalleryId = "& IntMappId &""
Response.write strSQL
Cn.Execute(strSQL)
strSQL = "DELETE FROM AlbGallerys WHERE Pk_GalleryId = "& IntMappId &""
Response.write strSQL
Cn.Execute(strSQL)
Cn.Close
Set Cn = Nothing
Response.Redirect("SkapaAlbum.asp")
End If
Set FSO = Nothing
Set Files = Nothing
Set Folder = Nothing
If strErrorMess <> "" Then Response.Write strErrorMess
End If
timediaMedlem sedan maj 2001420 inlägg HURRA! :birp
Ser att du har laddat upp ett script Erka. Tackar, men jag fixade det precis (rättigheterna lurade mig :r ) Tack2 till Solbulle!!
Bifogar det som funkade till slut:
<%
Set Upload = Server.CreateObject("Persits.Upload")
' Capture files
Upload.SaveVirtual("proto_up")
' Obtain file object
Set File = Upload.Files("THEFILE")
If Not File Is Nothing Then
' Build ODBC connection string
Connect = "driver={Microsoft Access Driver (*.mdb)};dbq=" & Server.MapPath("../../sys/komforb.mdb")
' Use ADO Recordset object
Set rs = Server.CreateObject("adodb.recordset")
' Reopen recordset to insert file
rs.Open "aktuellt", Connect, 2, 3
rs.AddNew
rs("bild") = File.ExtractFileName
rs("rubrik") = Upload.Form("rubrik")
rs.Update
Response.Write "File saved."
Else
Response.Write "File not selected."
End If
%>
solbulleMedlem sedan mars 20015 287 inlägg Kul att det löste sig. :)