Avatar billede data2k.dk Nybegynder
07. november 2004 - 04:37 Der er 12 kommentarer og
1 løsning

Ændre uploaded fils navn automatisk

Jeg prøver at få mit script til at uploade en fil.. hvilket den også gør... men vil gerne have at den ændre navnet på filen til det sidste ID i databasen + 1... hvordan gør man det?

<%
  Dim objMessage
  Dim rsConfigFile
  Dim txtFileData
   
  Set objMessage=Server.CreateObject("SCRIPTING.FileSystemObject")
  Set rsConfigFile=objMessage.OpenTextFile (Server.MapPath("config.txt"))

  while not rsConfigFile.AtEndOfStream
    txtFileData=rsConfigFile.ReadAll
  wend
  'Response.write "txtFileData="&txtFileData&"<br>"
   
  dim LinkMessage
  LinkMessage = split(txtFileData,"=")

  'SET THE PATH OF WHERE TO STORE THE FILES HERE
  Dim path
  path = LinkMessage(1)
  dim upd_doc
  dim flnam,pth,NewFileName
  dim flObj,upl
  dim biData
 
  'Now whatever the admin uploads, we have a preset file name for each of
  'them. We now upload this to the specific directory.
 
  set upl = new BinForm
  upl.Read()
  upl.Extensions=Array(".htm")
  'Response.write "server.mappath(path)="&server.mappath(path)&"<br>"
  'Response.write "path="&path&"<br>"
  upl.Directory=server.mappath(path)
  upl.Create=false
  upl.OverWrite=true

  set flObj=server.createobject("Scripting.FileSystemObject")

  if len(upl.form("flname")) > 0 then

    if flObj.FileExists(server.mappath("path"&flnam)) then
        flObj.DeleteFile(server.mappath("path"&flnam))
    end if
    upl.Save("flname")
    if upl.Success then
        Response.Write "<p>&nbsp;<p>The document was successfully updated."
    else
        Call ShowErr()
    end If

    set upl=nothing
    set flObj=nothing

    sub ShowErr()
        Response.Write "There was an error uploading this file. Please try again.<p>Possible causes are:<p>"
        response.write "<li>File size exceeds 150kb. Please ensure the file you are uploading is lesser than 150 kb.</li></ul><p>"
        response.write "Possible server causes:<p>"
        response.write "<ul><li>The directory to which the file is being uploaded does not exist - /includes/sitedocs</li>"
        response.write "<li>The posted data was not read due to problem with form posting</li></ul><p>"
        response.write "<input type=""button"" name=""btnBack"" value=""Back"" onClick=""java script:location.href='default.asp';"">"
    end sub
%>
Avatar billede michaelfp Nybegynder
07. november 2004 - 13:58 #1
Er det rsConfigFile du kalder databasen?
Avatar billede data2k.dk Nybegynder
07. november 2004 - 14:03 #2
Der er ikke rigtig nogen database
  Set objMessage=Server.CreateObject("SCRIPTING.FileSystemObject")
  Set rsConfigFile=objMessage.OpenTextFile (Server.MapPath("config.txt"))
Avatar billede data2k.dk Nybegynder
07. november 2004 - 14:03 #3
den kode finder bare ud af hvor den skal uploade billederne til.. det står i config.txt
Avatar billede data2k.dk Nybegynder
07. november 2004 - 14:05 #4
sorry.. glemte at sige det fordi jeg prøve at anvende to scripts sammen...
Avatar billede michaelfp Nybegynder
07. november 2004 - 14:15 #5
Hvor kommer ID fra (hvor henter du værdien) ?
Avatar billede data2k.dk Nybegynder
07. november 2004 - 18:29 #6
fra en database i samme folder som bare hedder database... men det burde vel stadig være muligt?
Avatar billede michaelfp Nybegynder
07. november 2004 - 19:23 #7
Hvis du laver denne funktion, så skal den kaldes med navnet på den tabel i din database, som skal åbnes og opdateres - eller hvad du nu gør i den OG extension
på de filer, du uploader.

Function CreateFileName(tabelname, ext)
Dim TName, C, Rs, conn, Rno

  '...her skal du skabe din connectionstring (jeg kalder den conn)
  Set rs = Server.CreateObject("ADODB.Recordset")
  Rs.Open Tabelname, conn,3 ,3
  Rno = Rs.recordcount+1
  Rs.Addnew
  '... hvis der er felter som skal have værdier f.eks Rs("ID") = ??
  '... samme
  Rs.Update
  Rs.Close
  Set Rs = Nothing
  Tname = Trim(CStr(Rno))
  While Len(Tname)<8 Do
    Tname = "0" & Tname
  Loop
  CreateFilename = Tname & "." & Ext
End function

I dit script kan funktionen så kaldes med noget a la dette:

  For each File in Upload.Files

      CopyFile "d:\home\ditdomæne\db\upload\" & file.extractFilename, "d:\home\ditdomæne\www\" & CreateFilename("Navn på din databasetabel", "extension til dine uploadede filer jpg eller dat eller doc")

    File.delete
  Next
Avatar billede data2k.dk Nybegynder
07. november 2004 - 19:28 #8
hej Michael...

Jeg vil prøve og se om jeg kan få det til at virke når jeg kommer hjem: ) håber jeg det gør
Avatar billede michaelfp Nybegynder
09. november 2004 - 23:49 #9
Skal spørgsmålet lukket eller fik du ikke problemet løst?
Avatar billede data2k.dk Nybegynder
09. november 2004 - 23:56 #10
jeg kan bare ikke se hvordan jeg skal sætte det sammen...

hvis nu vi glemmer at jeg har en side som kalder det script øverst...
kan du så lave en side som gør det? ...

databasen ligger i samme folder og hedder bare database... og der er et felt som hedder id under tabellen "indhold" .. det er det som access selv generere...

scriptet skal bare give det man uploader navnet på id'en + 1 ...dvs er det sidste id 50 skal billedet man uploader hedde ... 51.jpeg  evt
Avatar billede michaelfp Nybegynder
10. november 2004 - 09:53 #11
I nedenstående funktion skal du blot selv ændre den præcise sti til databasen og
sikre dig at navnet på tabellen er rigtig, så burde du kunne henvise til funktionen, som generere et filnavn til dig.

Function CreateFileName
Dim Tname, Rs, conn, Rno, DNS

  DNS = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=d:\home\ditdomæne\db\database.mdb;"

  Conn.Open DNS
  Set rs = Server.CreateObject("ADODB.Recordset")
  Rs.Open "indhold", conn,3 ,3
  Rno = Rs.recordcount+1
  Rs.Addnew
  '.... hvis der er flere felter,som skal opdateres
  Rs.Update
  Rs.Close
  Set Rs = Nothing
  Tname = Trim(CStr(Rno))
  While Len(Tname)<8 Do
    Tname = "0" & Tname
  Loop
  CreateFilename = Tname & ".JPEG"
End function
Avatar billede data2k.dk Nybegynder
10. november 2004 - 14:19 #12
jeg tester den i aften: ) for at være helt med.. skal den funktion så smides ind i koden øverst på siden.. ?
Avatar billede michaelfp Nybegynder
10. november 2004 - 22:40 #13
Du kan f.eks placere den i begyndelsen af <Body>
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