05. november 2002 - 10:34Der er
5 kommentarer og 1 løsning
billed-upload
Jeg har et billedeupload, hvor jeg benytter aspSmartUpload, men jeg er lidt usikker på hvordan det virker... Hvordan kan jeg sikre mig at alle mine billeder har forskellige navne i den mappe jeg uploader til.....? (Fx ville jeg gerne omdøbe dem til "id-nr.jpg", kan jeg det?)
Jeg har haft samme problem på et tidspunkt, jeg gemt dog ikke i en database men på serveren i en mappe. Men måske du kan bruge noget af det:
Det første jeg gjorde var at tjekke om filen existerede i forvejen, hvis den gør så gem den i en midlertidig mappe:
<% For each file In mySmartUpload.Files toUpload = file.FileName path = server.mappath(".") &"\billeder\" & toUpload set fs = Server.CreateObject("Scripting.FileSystemObject") if fs.fileExists(path) then ' Filen eksisterer gem billedet paa serveren som en temp fil. tempPath = "billeder/tmp/" intCount = mySmartUpload.Save(LCase(server.mappath(tempPath))) %> <form action="uploadg.as?&overwrite=true" method="post"> <input type="Hidden" name="tempfile" value="<%= toUpload %>"> <table border="0"> <tr><td class="red">Der findes allerede en fil med dette navn på serveren.</td></tr> <tr><td>Angiv et nyt fil navn, vil du overskrive det eksisterende så tryk på "gem billedet".</td></tr> <tr><td><input type="text" name="fileupload" size="40" value="<%= toUpload %>"> <input type="submit" name="Action" value="Gem billedet"> <input type="button" name="Action" value="Fortryd" onclick="document.location.href='vis.arkiv.asp?<%= Request.ServerVariables("QUERY_STRING") %>'"></td></tr> </table> </form> <% else ' sample with a physical path intCount = mySmartUpload.Save(LCase(server.mapPath(uploadPath))) ' Trap errors If Err Then Response.Write "<h3>Der opstod en fejl under upload!</h3>" Response.Write "<h3>" & Err.description & "</h3>" Else Response.Write "<h3>Upload ok!</h3>" End If
end if Next %>
Hvis nu filen fandt så fik brugerne en ny boks frem hvor de kunne enten ændre filens navn eller give den en ny. Når de sendte denne form flyttede jeg den midlertidig fil til den rigtige mappe på serveren.
<% tempfile = request.form("tempfile") newName = request.form("fileupload") path = "../../billeder/" tempPath= "../../billeder/tmp/" set fs = Server.CreateObject("Scripting.FileSystemObject") if fs.fileExists(Server.mappath(path & newName)) then fs.deleteFile(Server.mappath(path & newName)) end if fs.MoveFile Server.mappath(tempPath & tempfile),Server.mappath(path & newName) %>
1. Jeg gemmer også i en mappe og ikke i databasen.... 2. Jeg vil bare rename filen inden jeg putter den i mappen, jeg behøver ikke checke om der er en med samme navn først, da mit idnr jo er unikt.... Så selv om din metode kan bruges Rasmus, vil jeg hellere løse det på den anden facon. Nogen der kan hjælpe?
Problemet er at du ikke kan omdøbe filerne før end at de er gemt... du kan heller ikke omdøbe dem i forbindelse med at du uploader dem med aspSmartUpload. Den eneste måde jeg er stødt på er at gemme dem i en midlertidig mappe og derefter flytte dem med FileSystemObject's MoveFile metode da du kan omdøbe den på den måde. Jeg har undersøgt det grundigt (syntes jeg selv :-D) men er ikke stødt på nogen bedre metode. Du behøves jo ikke at tjekke om den findes - upload, flyt og slet midlertidig - det burde virke.
Jeg endte med at gøre det på en måde hvor jeg lavede en mappe til hver idnr i stedet, men din metode var jo også god Rasmus, så tak for hjælpen!!!
Synes godt om
Ny brugerNybegynder
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.