Avatar billede jtc Nybegynder
18. februar 2004 - 17:13 Der er 70 kommentarer og
1 løsning

Simpel upload af flere billeder

Hej Eksperter
Jeg har denne side som uploader 1 billed, men jeg vil gerne udvide den til at kunne uploade 10 billeder, samtidig med at de uploadede billeder bliver omdøbt til et fortløbende nummer.
Er det noget i kan klare???

<%
Set indlaeg = Server.CreateObject("ADODB.Recordset")

if Request.ServerVariables("REQUEST_METHOD") = "POST" then

  Set upload = Server.CreateObject("aspSmartUpload.SmartUpload")
  upload.Upload

  indlaeg.Open "SELECT * FROM tblsag", database,2 ,2

  sti = "/infratech/billeder/sager/"
  for each file in upload.Files
    If not file.IsMissing Then
      filnavn = sti & file.FileName
      file.saveas Server.MapPath(filnavn)
    else
      filnavn = ""
    end if
  next
 
  indlaeg.AddNew
  indlaeg("foto1") = filnavn

  Response.Redirect("default.asp")

  end if
%>

<form action="opret.asp" method="post" enctype="multipart/form-data" name="form1"><input name="file1" type="file" size="21">
</form>
Avatar billede eagleeye Praktikant
18. februar 2004 - 17:29 #1
Hvor kommer det første nummner fra?

Skal de 10 filer i samme række i databasen eller i hver sin?
Avatar billede jtc Nybegynder
18. februar 2004 - 17:39 #2
de skal ind i samme række
felterne hedder
foto1
foto2
foto3
osv indtil
foto10
Avatar billede jtc Nybegynder
18. februar 2004 - 17:40 #3
det første nummer hvad mener du??
Avatar billede eagleeye Praktikant
18. februar 2004 - 17:41 #4
For ikke at overskrive dem næste gang man uploader eller hedder de igen
foto1 --> foto10 ?
Avatar billede eagleeye Praktikant
18. februar 2004 - 17:46 #5
Men til at starte med skal formen laves om sådan der er 10 input felter for filer:

<form action="opret.asp" method="post" enctype="multipart/form-data" name="form1">
<input name="file1" type="file" size="21">
<input name="file2" type="file" size="21">
<input name="file3" type="file" size="21">
<input name="file4" type="file" size="21">
<input name="file5" type="file" size="21">
<input name="file6" type="file" size="21">
<input name="file7" type="file" size="21">
<input name="file8" type="file" size="21">
<input name="file9" type="file" size="21">
<input name="file10" type="file" size="21">
</form>
Avatar billede eagleeye Praktikant
18. februar 2004 - 17:49 #6
Så skal dette:

  sti = "/infratech/billeder/sager/"
  for each file in upload.Files
    If not file.IsMissing Then
      filnavn = sti & file.FileName
      file.saveas Server.MapPath(filnavn)
    else
      filnavn = ""
    end if
  next


Laves om til dette:

  sti = "/infratech/billeder/sager/"
  index = 1
  for each file in upload.Files
    If not file.IsMissing Then
      filnavn = sti & "foto" & index & "." & file.FileExt
      file.saveas Server.MapPath(filnavn)
      index = index + 1
    else
      filnavn = ""
    end if
  next
Avatar billede jtc Nybegynder
18. februar 2004 - 17:51 #7
Det er en sag/rapport hvor man til hver rapport skal kunne uploade 10 billeder

Vil det du har skrevet nu overskrive tidligere billeder??
Avatar billede eagleeye Praktikant
18. februar 2004 - 17:52 #8
Ja det vil overskrive dem som er i folderen
/infratech/billeder/sager/
Avatar billede jtc Nybegynder
18. februar 2004 - 17:57 #9
kan man så oprette en mappe i mappen sager til hver rapport?
Avatar billede eagleeye Praktikant
18. februar 2004 - 18:00 #10
Jo det kan man godt.
Hvor kommer navnet til mappen så fra?
Avatar billede jtc Nybegynder
18. februar 2004 - 18:03 #11
kan man bruge rapportens id??
Avatar billede jtc Nybegynder
18. februar 2004 - 18:04 #12
det er et autonummereringsfelt
Avatar billede eagleeye Praktikant
18. februar 2004 - 18:05 #13
Ja det kan man, hvilken database er det?
Skulle billederne ind i samme post ??
Avatar billede jtc Nybegynder
18. februar 2004 - 18:10 #14
ja billederne skal ind i samme post/række i databasen
Det er access
Avatar billede jtc Nybegynder
18. februar 2004 - 18:16 #15
jeg har lige afprøvet det du sagde jeg skulle rette, men den gemmer ikke nogen af stierne i databasen
Avatar billede eagleeye Praktikant
18. februar 2004 - 18:22 #16
Så skal det laves om til noget i stil med dette, stien skulle også komme med.:

<%
Set indlaeg = Server.CreateObject("ADODB.Recordset")

if Request.ServerVariables("REQUEST_METHOD") = "POST" then

  Set upload = Server.CreateObject("aspSmartUpload.SmartUpload")
  upload.Upload

  indlaeg.Open "SELECT * FROM tblsag", database,2 ,2
  indlaeg.AddNew
  indlaeg("foto1") = "xx"
  indlaeg.Update
  'Få ID på den nye post
  rapportid = indlaeg("id")

  sti = "/infratech/billeder/sager/" & rapportid & "/"
  index = 1
  for each file in upload.Files
    If not file.IsMissing Then
      filnavn = sti & "foto" & index & "." & file.FileExt
      file.saveas Server.MapPath(filnavn)
      indlaeg("foto" & index) = filnavn
      index = index + 1
    else
      filnavn = ""
    end if
  next

  Response.Redirect("default.asp")

  end if
%>
Avatar billede jtc Nybegynder
18. februar 2004 - 18:28 #17
den giver fejl??
men kan det være fordi mappen ikke er der??
Avatar billede eagleeye Praktikant
18. februar 2004 - 18:41 #18
arh ja det nok rigtigt :)

Så prøv sådan her:

<%
Set indlaeg = Server.CreateObject("ADODB.Recordset")

if Request.ServerVariables("REQUEST_METHOD") = "POST" then

  Set upload = Server.CreateObject("aspSmartUpload.SmartUpload")
  upload.Upload

  indlaeg.Open "SELECT * FROM tblsag", database,2 ,2
  indlaeg.AddNew
  indlaeg("foto1") = "xx"
  indlaeg.Update
  'Få ID på den nye post
  rapportid = indlaeg("id")

  sti = "/infratech/billeder/sager/" & rapportid & "/"

  Set fs=Server.CreateObject("Scripting.FileSystemObject")
  If fs.FolderExists(Server.Mappath(sti)) = false Then
    fs.CreateFolder(Server.Mappath(sti))
  end if
  index = 1
  for each file in upload.Files
    If not file.IsMissing Then
      filnavn = sti & "foto" & index & "." & file.FileExt
      file.saveas Server.MapPath(filnavn)
      indlaeg("foto" & index) = filnavn
      index = index + 1
    else
      filnavn = ""
    end if
  next

  Response.Redirect("default.asp")

  end if
%>
Avatar billede jtc Nybegynder
18. februar 2004 - 18:51 #19
nu tænker den i lang tid men der sker ikke rigtig andet end at den tænker??

hvad med
  indlaeg("foto1") = "xx"

skal der ikke være fra foto1 til 10 eller hvad??
Avatar billede jtc Nybegynder
18. februar 2004 - 18:53 #20
der er stadig fejl det tog bare lidt tid
Avatar billede eagleeye Praktikant
18. februar 2004 - 18:57 #21
Prøv at sætte en response.write ind efter stien er lavet:

sti = "/infratech/billeder/sager/" & rapportid & "/"
Response.Write sti
Response.End

og se hvad den skriver?
Avatar billede jtc Nybegynder
18. februar 2004 - 19:06 #22
stadig fejl
Avatar billede jtc Nybegynder
18. februar 2004 - 19:06 #23
men kan jeg sende filen til dig så du kan se på den??
Avatar billede eagleeye Praktikant
18. februar 2004 - 19:12 #24
jeg har ikke aspsmartupload..

hvad hedder din autonummer kolonne?
Avatar billede eagleeye Praktikant
18. februar 2004 - 19:13 #25
Hvis den ikke hedder ID så ret denne linje sådan den passer med navnet:

rapportid = indlaeg("id")
Avatar billede jtc Nybegynder
18. februar 2004 - 19:17 #26
den hedder id

men
      indlaeg("foto" & index) = filnavn
skal vel også stå inde i
indlaeg.addnew
indlaeg.update
???
Avatar billede eagleeye Praktikant
18. februar 2004 - 19:18 #27
Nej det skulle ikke være nødvendigt.

Har du kolonnerne foto1, foto2, foto3 ..> foto10 ?
Avatar billede jtc Nybegynder
18. februar 2004 - 19:19 #28
ja det virkede jo fint hvis jeg kun havde et billed
Avatar billede eagleeye Praktikant
18. februar 2004 - 19:22 #29
Siger den ikke hvor fejlen kommer og evt en fejl kode?
Avatar billede jtc Nybegynder
18. februar 2004 - 19:22 #30
Jeg har nu rettet det til dette
og nu kan jeg uploade en sag hvis der ikke er noget billed, men hvis der er et billed er der fejl
<%
Set indlaeg = Server.CreateObject("ADODB.Recordset")

if Request.ServerVariables("REQUEST_METHOD") = "POST" then

  Set upload = Server.CreateObject("aspSmartUpload.SmartUpload")
  upload.Upload

  indlaeg.Open "SELECT * FROM tblsag", database,2 ,2

  sti = "/infratech/billeder/sager/"

  index = 1
  for each file in upload.Files
    If not file.IsMissing Then
      filnavn = sti & "foto" & index & "." & file.FileExt
      file.saveas Server.MapPath(filnavn)
      indlaeg("foto" & index) = filnavn
      index = index + 1
    else
      filnavn = ""
    end if
  next

  Response.Redirect("default.asp")

  end if
%>
Avatar billede eagleeye Praktikant
18. februar 2004 - 19:25 #31
så fejler den i denne linje:
indlaeg("foto" & index) = filnavn

Prøv at tilføje indlaeg.Addnew efter .open

indlaeg.Open "SELECT * FROM tblsag", database,2 ,2
indlaeg.AddNew
Avatar billede jtc Nybegynder
18. februar 2004 - 19:26 #32
nej der står bare
http 500 internal server error
Avatar billede eagleeye Praktikant
18. februar 2004 - 19:29 #33
Du skulle gerne få en bedre fejl kode/beskrivelse ved at slå denne fra i IE:

funktioner -> internetindstillinger -> avanceret -> fjern kryds i "vis meddelelse om uskadelige http-fejl"
Avatar billede jtc Nybegynder
18. februar 2004 - 19:31 #34
skal det så ikke stå længere ende
ved
indlaeg.addnew
indlaeg("foto1") = filnavn
indlaeg.update
Avatar billede eagleeye Praktikant
18. februar 2004 - 19:40 #35
Nej ikke hvis man skal hvade alle 10 filer ind i databasen
Avatar billede eagleeye Praktikant
18. februar 2004 - 19:45 #36
jeg er lige væk nogle timer.. :)
Avatar billede jtc Nybegynder
18. februar 2004 - 19:53 #37
okay, skriv når du er her igen
Avatar billede jtc Nybegynder
18. februar 2004 - 21:27 #38
kan det desuden være rigtigt at filerne ikke må være for store???
Avatar billede jtc Nybegynder
18. februar 2004 - 21:54 #39
Dette virker på den måde at alle billeder bliver uploadet til mappen sager samtidig med at stierne gemmes i databasen

Men hvordan får jeg det lavet sådan at de gemmes i den "id"-folder vi snakkede om??
<%
Set indlaeg = Server.CreateObject("ADODB.Recordset")

if Request.ServerVariables("REQUEST_METHOD") = "POST" then

  Set upload = Server.CreateObject("aspSmartUpload.SmartUpload")
  upload.Upload

  indlaeg.Open "SELECT * FROM tblsag", database,2 ,2
 
  indlaeg.addnew

  sti = "/infratech/billeder/sager/"
  index = 1
  for each file in upload.Files
    If not file.IsMissing Then
      filnavn = sti & "foto" & index & "." & file.FileExt
      file.saveas Server.MapPath(filnavn)
      indlaeg("foto" & index) = filnavn
      index = index + 1
    else
      filnavn = ""
    end if
  next

  indlaeg.Update

  Response.Redirect("default.asp")

end if
%>
Avatar billede eagleeye Praktikant
18. februar 2004 - 22:16 #40
>>kan det desuden være rigtigt at filerne ikke må være for store???
Det mulligt der er max størrelse

Hvad så hvis du udvider:
  indlaeg.Open "SELECT * FROM tblsag", database,2 ,2
 
  indlaeg.addnew

til:
  indlaeg.Open "SELECT * FROM tblsag", database,2 ,2
 
  indlaeg.addnew
  indlaeg.Update
  id = indlaeg("id")
response.write id
response.End

Får du ikke et tal skrevet ud?
Avatar billede jtc Nybegynder
18. februar 2004 - 22:58 #41
jeg fandt selv ud af det

men hvordan finder jeg ud af hvilken max størrelse der er
Avatar billede eagleeye Praktikant
18. februar 2004 - 23:02 #42
Prøver og kigger her:
http://www.aspsmart.com/aspSmartUpload/

Man kan styre max størrelse på en fil eller alle filer med disse to:
.TotalMaxFileSize
.MaxFileSize
men jeg syntes umiddelbart ikke der er en max størrelse opgivet.
Avatar billede jtc Nybegynder
18. februar 2004 - 23:03 #43
okay men sådan kom koden til at se ud

Kan du så sige mig hvordan jeg sletter billederne igen??
Avatar billede jtc Nybegynder
18. februar 2004 - 23:03 #44
den blev således

<%
Set indlaeg = Server.CreateObject("ADODB.Recordset")

if Request.ServerVariables("REQUEST_METHOD") = "POST" then

  Set upload = Server.CreateObject("aspSmartUpload.SmartUpload")
  upload.Upload

  indlaeg.Open "SELECT * FROM tblsag", database,2 ,2

  Sql1 = "Select * From tblsag order by id desc"
  Set Rs1 = database.Execute(Sql1)
  rapportid=rs1("id")+1
  indlaeg.addnew

  sti = "/infratech/billeder/sager/" & rapportid & "/"
  Set fs=Server.CreateObject("Scripting.FileSystemObject")
  If fs.FolderExists(Server.Mappath(sti)) = false Then
    fs.CreateFolder(Server.Mappath(sti))
  end if
  index = 1
  for each file in upload.Files
    If not file.IsMissing Then
      filnavn = sti & "foto" & index & "." & file.FileExt
      file.saveas Server.MapPath(filnavn)
      indlaeg("foto" & index) = filnavn
      index = index + 1
    else
      filnavn = ""
    end if
  next

  indlaeg.Update

  Response.Redirect("default.asp")

end if
%>
Avatar billede eagleeye Praktikant
18. februar 2004 - 23:09 #45
Du kan slette en fil med FileSystemObject:


<%
filnavn = "/infratech/billeder/sager/foto1.jpg"
Set fs=Server.CreateObject("Scripting.FileSystemObject")
if fs.FileExists(Server.Mappath(filnavn)) then
  fs.DeleteFile(Server.Mappath(filnavn))
end if
set fs=nothing
%>
Avatar billede jtc Nybegynder
18. februar 2004 - 23:13 #46
det skal jeg lige have hjælp til i morgen hvis det er okay med dig??

kan vi ellers ikke prøve at sætte en totalmaxfilesize på den jeg allerede har lavet
Avatar billede eagleeye Praktikant
18. februar 2004 - 23:15 #47
Ja man sætte max size ind før man kalder .Upload et eks:

  Set upload = Server.CreateObject("aspSmartUpload.SmartUpload")
  upload.TotalMaxFileSize = 1000000
  upload.MaxFileSize = 250000
  upload.Upload
Avatar billede jtc Nybegynder
18. februar 2004 - 23:22 #48
okay men
vil du hjælpe mig med det andet i morgen
Avatar billede eagleeye Praktikant
18. februar 2004 - 23:25 #49
Ja vi kan kigge på det, men det bliver først i morgen aften.
Avatar billede jtc Nybegynder
19. februar 2004 - 14:32 #50
det er kommet lidt problemer da jeg bliver nødt til at bruge noget ala
  rapportid=indlaeg("id")

men strængen er tom
Hvad kan vi gøre???
Avatar billede jtc Nybegynder
19. februar 2004 - 22:28 #51
Hvis du er der så skriv lige eagleeye
Avatar billede jtc Nybegynder
19. februar 2004 - 23:51 #52
Jeg fandt ud af det meste, nu mangler der kun en slettefunktion
Så hvis du er der eagleeye så skriv lige :-)
Avatar billede eagleeye Praktikant
19. februar 2004 - 23:55 #53
ja, hvornår skal filerne slettes?
Avatar billede jtc Nybegynder
19. februar 2004 - 23:57 #54
der skal være en checkboks til hvert billed hvormed det slettes hvis denne checkboks chekes
Avatar billede eagleeye Praktikant
19. februar 2004 - 23:59 #55
Vælges de ud fra ID i databasen??
Avatar billede jtc Nybegynder
20. februar 2004 - 00:07 #56
jeg fandt lige ud af at jeg først skal have lavet om i denne kode så den ikke overskriver tidligere uploade filer hvis man er inde og rette i sagen

  sti = "/infratech/billeder/sager/" & id & "/"
  Set fs=Server.CreateObject("Scripting.FileSystemObject")
  If fs.FolderExists(Server.Mappath(sti)) = false Then
    fs.CreateFolder(Server.Mappath(sti))
  end if
  index = 1
  for each file in upload.Files
    If not file.IsMissing Then
      filnavn = sti & "foto" & index & "." & file.FileExt
      file.saveas Server.MapPath(filnavn)
      indlaeg("foto" & index) = filnavn
      index = index + 1
    else
      indlaeg("foto" & index) = ""
      index = index + 1
    end if
  next

Kan du hjælpe med det
Avatar billede eagleeye Praktikant
20. februar 2004 - 00:16 #57
Slet filerne.
Hvis man vælger det ud fra et ID altså den folder som billederne ligger i.:

<%
id = Request.QuesryString("id")
sti = "/infratech/billeder/sager/" & id & "/"

sfil = Request.ServerVariables("SCRIPT_NAME")
set fs=Server.CreateObject("Scripting.FileSystemObject")

if Request.ServerVariables("REQUEST_METHOD") = "POST" then
  filnavne = Request.Form("sletmig")
  arr = Split(filnavne,",")
  for i = lbound(arr) to ubound(arr)
    if fs.FileExists(Server.Mappath(sti & arr(i))) Then
      fs.DeleteFile (Server.Mappath(sti & arr(i)))
    end if
  next
end if

set f=fs.GetFolder(Server.Mappath(sti))
%>
<form action="<%=sfil%>?id=<%=id%>" method="post">
<% for each file in f.files %>
  <img src="<%=sti & file.name%>"><input type="checkbox" name="sletmig" value="<%=file.name%>"><br>
<% next %>
<input type="submit" name="Sletdem" value="Slet">
</form>
<%
set f=nothing
set fs=nothing
%>
Avatar billede jtc Nybegynder
20. februar 2004 - 00:18 #58
jeg skal lige have ordnet det andet først så hvis du ville hjælpe med det først???
Avatar billede eagleeye Praktikant
20. februar 2004 - 00:19 #59
Så må dette :

  index = 1
  for each file in upload.Files
    If not file.IsMissing Then
      filnavn = sti & "foto" & index & "." & file.FileExt
      file.saveas Server.MapPath(filnavn)
      indlaeg("foto" & index) = filnavn
      index = index + 1

laves om til dette:

  index = 0
  for each file in upload.Files
    If not file.IsMissing Then
      do
        index=index+1
        filnavn = sti & "foto" & index & "." & file.FileExt
      loop while fs.FileExists(filnavn)
      file.saveas Server.MapPath(filnavn)
      indlaeg("foto" & index) = filnavn
Avatar billede jtc Nybegynder
20. februar 2004 - 00:22 #60
det giver fejl
Avatar billede jtc Nybegynder
20. februar 2004 - 00:25 #61
det er jo ikke ligemeget hvor hvert billed bliver gemt
filen fra file1 skal gemmes i foto1
filen fra file2 skal gemmes i foto2
Hvis du forstår

Det er derfor jeg har lavet lidt om i det vi kom frem til i går
Avatar billede jtc Nybegynder
20. februar 2004 - 00:27 #62
kan jeg ikke lave en funktion for hvert billed i stedet for at skulle loope, det fungere jo ikke helt??
Avatar billede jtc Nybegynder
20. februar 2004 - 00:28 #63
Husk også det er en side hvor man kan opdatere sagen
Avatar billede eagleeye Praktikant
20. februar 2004 - 00:31 #64
Så må du hendte et billed af gange:

for index = 1 to 10
  If Not Upload.Files("FILE"&index) Is Nothing Then
    Set file = Upload.Files("FILE"&index)
    filnavn = sti & "foto" & index & "." & file.FileExt
    file.saveas Server.MapPath(filnavn)
    indlaeg("foto" & index) = filnavn
  end if
next
Avatar billede jtc Nybegynder
20. februar 2004 - 00:38 #65
ja det virker næsten men
hvis der ikke er valgt nogen filskal der ikke uploades noget til databasen eller mappen
Avatar billede jtc Nybegynder
20. februar 2004 - 00:44 #66
kan du klare det??
Avatar billede jtc Nybegynder
20. februar 2004 - 00:51 #67
er du der endnu???
Avatar billede jtc Nybegynder
20. februar 2004 - 01:12 #68
jeg håber du kommer igen senere i dag og svarer på det sidste
PLEASE :-)
Avatar billede jtc Nybegynder
02. marts 2004 - 15:04 #69
Hvis du vil have lidt point for hjælpen må du lægge et svar eagleeye
Avatar billede eagleeye Praktikant
02. marts 2004 - 18:14 #70
ok:)
Avatar billede jtc Nybegynder
03. marts 2004 - 18:01 #71
Jeg takker mange gange
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester