17. november 2005 - 18:51Der er
22 kommentarer og 1 løsning
Find allerede eksisterende fil
Hejsa :)
Nogle der kan finde ud af at lave et check på/i nedenstående om filen allerede ér blevet uploadet til serveren/eksistere i forvejen? ---------------------------------------------------
<% Set Upload = Server.CreateObject("Persits.Upload") Upload.Save "c:\webs\talkactive\xxxx\xxxx.dk\Upload"
sql = "SELECT COUNT(*) FROM tbl_linkMaps WHERE image_filename = '" & File.Filename & "'" set rs = Sevrer.CreateObject("ADODB.Recordset") rs.open sql, connect, 3, 3 if not rs.eof then bFound = int(rs(0)) > 0 else bFound = false end if
Hvor jeg har det fra, var der et eks. med netop dette, men kunne ikke få det til at virke. ----------------------------------------------- ' Optional: check whether this file already exists using MD5 hash Hash = File.MD5Hash rs.Open "SELECT * from MYIMAGES WHERE Hash='" & Hash & "'", Connect, 2, 3 If Not rs.EOF Then Response.Write "This file already exists in the database." Response.End End If rs.Close ----------------------------------------------- Ved ikke om dette er dig nogen hjælp.. :)
OK, jeg nåede ikke lige at se dit post fra 21/11-2005 21:38:55, men det den gør er at checke om nøfagtig det pågældende filindhold er uploaded før, dvs. to filer med forskellige navne kan i realiteten give et sammenfald. Det kan også godt være det giver mening i dit scenarie, men det kan modsat også give anledning til lidt forvirring...
sql = "SELECT COUNT(*) FROM tbl_linkMaps WHERE image_filename = '" & File.Filename & "'" set rs = Server.CreateObject("ADODB.Recordset") rs.open sql, connect, 3, 3 if not rs.eof then bFound = int(rs(0)) > 0 else bFound = false end if
File.ToDatabase Connect, SQL end if Response.Write "Filen blev uploadet." else Response.Write "Filen findes allerede." end if %> -------------------------------------------------------------------
Nu er det bare de der Response.Write jeg skal have styr på, for den skriver ikke, at filen allerede findes i tilfælde af at den GØR det...
Så jeg ved ikke om jeg evt. måske har lavet DEM forkert: end if Response.Write "Filen blev uploadet." else Response.Write "Filen findes allerede." end if
sql = "SELECT COUNT(*) FROM tbl_linkMaps WHERE image_filename = '" & File.Filename & "'" set rs = Server.CreateObject("ADODB.Recordset") rs.open sql, connect, 3, 3 if not rs.eof then bFound = int(rs(0)) > 0 else bFound = false end if rs.close
Aii softspot.. nu er den sgu gal igen du gamle *G*
Hvis du gider?.. hehe :) (Jeg opretter naturligvis et spm. med point "60" til dig) :)
Ville gerne at den lavede et tjek på om filen er størrer, end en forudbestem af mig størrelse.
Jeg har prøvet med dette: Upload.SetMaxSize 10, True response.write "Filen er for stor"
Og det virker egentlig "vist nok" også fint nok, den skriver:
Filen er for stor Persits.Upload.1 error '800a0008'
At least one of the uploaded files exceeds the maximum allowed size.
/firmamappe/ubc/linkmaps/upload_pic_save.asp, line 19 ----------
Men kunne man ikke gøre sådan at den ikke kommer med den der fejlmeddelse.? og KUN skriver "Filen er for stor"?
--------------------------------------------- Det hele for god ordens skyld (se i toppen) --------------------------------------------- <% Set Upload = Server.CreateObject("Persits.Upload")
Upload.SetMaxSize 10, True response.write "Filen er for stor"
Upload.Save "c:\webs\talkactive\web7764\cms24.dk\Upload" Set File = Upload.Files("THEFILE")
sql = "SELECT COUNT(*) FROM tbl_linkMaps WHERE image_filename = '" & File.Filename & "'" set rs = Server.CreateObject("ADODB.Recordset") rs.open sql, Connect, 2, 3 if not rs.eof then bFound = int(rs(0)) > 0 else bFound = false end if
Jeg har faktisk ikke arbejdet med begrænsning af filstørrelsen for Persits.Upload, men såvidt jeg har forstået, så medfører din opsætning af Upload (dvs. Upload.SetMaxSize 10, true) en fejlmeddelelse hvis en eller flere filer overskrider max-størrelsen. Hvorvidt dette er hensigtsmæssigt eller ej kan man diskutere, for det afhænger af hvilken adfærd du vil understøtte. Med den metode ud har sat op der, vil jeg tro du får svært ved andet end at afvise alle filer, hvis der bare er en som er for stor. Hvis du undlader at rejse en fejl, når der er filer i upload, som er for store (Upload.SetMaxSize 10, false), så kan du lade de filer der holder sig indenfor grænsen gemme i databasen og så bare afvise dem der er for store... men igen så afhænger det af dit behov og den aktuelle applikation.
Hvis du ikke vil afvise alle, så vil jeg mene du skal sætte anden parameter i SetMaxSize til False og så checke for størrelse på hver af filerne der uploades (det kan du jo bruge File.Size til)...
Det ville bare være en ok smart feature at bruge syntes jeg, og/men det er nok mere for min EGEN skyld :) og ikke så meget brugerne af sitet, da den skal ligge i et "lukket" miljø og kun vil blive benyttet af 3 personer, og de VED at de ikke skal uploade nogle kæmpe filer/billeder.
Så behovet er egentlig at ikke have en begrænsning på kan man sige, hvor imod hvis det var en offentlig side, ville det nok være mere hensigtsmæssigt.
Jeg tror jeg holder med scriptet her, og siger at det er tilfredsstillende nok nu.
Du kan i princippet godt slå fejlhåndteringen til, da du jo tilsyneladende kun uploader en fil. Det betyder bare at du skal slå standardfejlhåndteringen fra. Det vil jeg tro du kan gøre således:
<% on error resume next Set Upload = Server.CreateObject("Persits.Upload")
Upload.SetMaxSize 10, True
Upload.Save "c:\webs\talkactive\web7764\cms24.dk\Upload" Set File = Upload.Files("THEFILE") if err.number <> 0 then Response.Write "Filen er for stor" else If Not File Is Nothing Then
File.ToDatabase Connect, SQL Response.Write "Filen blev uploadet." else Response.Write "Filen findes allerede." end if end if end if on error goto 0 %>
P.S. Jeg er ikke helt klar over hvornår fejlen opstår, så det kan godt være du kan flytte "if err.number <> 0 then" lidt højere op, men i princippet burde det der også fungere...
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.