Meddelande

Minska
No announcement yet.

Klassisk ASP, byta tecken på fil

Minska
X
 
  • Filter
  • Klockan
  • Show
Clear All
new posts

  • Klassisk ASP, byta tecken på fil

    http://www.aspupload.com/manual_misc.html

    Hur gör jag för att byta tecken i filer som laddas upp??
    Jag har ännu inte klurat ut det...

    Kod:
    	' ## NO OVERWRITE
    	Upload.OverwriteFiles = False
    
    	' ## SAVE FILE
    	Upload.Save Server.MapPath("\pdf\") & "\"
    
    	' ## Obtain file object
    	Set File = Upload.Files("FILE1")
    	' ## REPLACE CHARACTERS
    	DIM myFileName
    	myFileName = File.Filename
    	myFileName = replace() <---- detta blir fel då filen redan är uppladdad!!
    	
    	IF NOT File IS NOTHING THEN
    stoppa in i databasen...
    - Vad hette La Liga då det begav sig?
    - Då Liga.

  • #2
    Använd FSO för att byta namn på filen.

    http://classicasp.aspfaq.com/files/d...temobject.html

    mvh
    @aviddevguy

    Kommentera


    • #3
      FSO får det bli.

      Tack för det! :-)
      - Vad hette La Liga då det begav sig?
      - Då Liga.

      Kommentera


      • #4
        Om det är nån som vill ha. Går säkert att göra snyggare, men det fungerar i alla fall. Funkar bra för ändamålet! :-)

        Kod:
        IF request("dbaction") = "insert" THEN
        
        	' ## NO OVERWRITE
        	Upload.OverwriteFiles = False
        
        	' ## SAVE FILE
        	Upload.Save Server.MapPath("\pdf\") & "\"
        
        	' ## Obtain file object
        	Set File = Upload.Files("FILE1")
        	
        	IF NOT File IS NOTHING THEN
        		' ## REPLACE CHARACTERS USING FSO
        		DIM myFileName
        		myFileName = File.Filename
        		myFileName = replace(myFileName, " ", "_")
        
        		myFileName = replace(myFileName, "Å", "A")
        		myFileName = replace(myFileName, "Ä", "A")
        		myFileName = replace(myFileName, "Ö", "O")
        		myFileName = replace(myFileName, "å", "a")
        		myFileName = replace(myFileName, "ä", "a")
        		myFileName = replace(myFileName, "ö", "o")
        		
        		myFileName = replace(myFileName, "Ü", "U")
        		myFileName = replace(myFileName, "ü", "u")
        
        		' ## CHECK FOR FREE NAME
        		set fso = CreateObject("Scripting.FileSystemObject") 
        		IF fso.fileExists( Server.MapPath("\pdf\") & "\" & myFileName )  THEN
        			myArrayXX = split( myFileName, ".", -1, 1)
        
        			strFileName = myArrayXX(0)& "_"
        			intCounter  = 1
        			strExt      =  "." & myArrayXX(1)
        			myFileName = strFileName & intCounter & strExt
        			
        			' ## CHECK FOR DUPLICATES
        			WHILE fso.fileExists( Server.MapPath("\pdf\") & "\" & myFileName )
        				myFileName = strFileName & CInt(intCounter) +1 & strExt
        				intCounter = intCounter + 1
        			WEND
        		END IF
        		set fso = Nothing
        
        		' ## REPLACE FILE
        		' ## SOURCE: http://classicasp.aspfaq.com/files/directories-fso/can-i-rename-a-file-using-filesystemobject.html
        		set fso = CreateObject("Scripting.FileSystemObject") 
        		fso.MoveFile Server.MapPath("\pdf\") & "\" & File.Filename , Server.MapPath("\pdf\") & "\" & myFileName
        		set fso = Nothing
        		
        	  ' ## NEW POST
        	  SQL = "INSERT INTO [" & myTable & "] (intCatalogueSEID, strName, dteCreated, dteViewFrom, dteViewTo, " _
        		& " strFileName, intFilesize, intSortfield, bolView) SELECT " _
        		& myID & ", '" _
        		& myFileName & "', #" _
        		& date() & "#, #" & date() & "#, #" & date() & "#, '" _
        		& myFileName & "', " _
        		& File.Size & ", " _
        		& " (COUNT(*)+1), TRUE FROM [" & myTable & "] WHERE intCatalogueSEID = " & myID & ";"
        
          	Conn.Execute(SQL)
         ' 	Response.Write "File saved."
        	ELSE
        	'  Response.Write "File not selected."
        	END IF
        	
        END IF
        - Vad hette La Liga då det begav sig?
        - Då Liga.

        Kommentera


        • #5
          Även om hela replace-delen säkert skulle gå bra att göra med ett reguljärt uttryck istället hade jag gjort hela filnamnsbytet i en egen funktion istället. Det känns inte så vackert att ha hela det där kodstycket inne i loopen.

          mvh
          @aviddevguy

          Kommentera


          • #6
            Öhh... det är ju samma kod fast inte på samma ställe...(??) Eller vad menar du!?

            Det blir ju inte MINDRE kod!?

            Det blir möjligen estetiskt mer tilltalande, men det är inget man får betalt för direkt. Dessutom, det är 20 rader... Orka bry sig.

            Det är ingen loop. Koden exekveras bara EN gång för man kan bara ladda upp en fil åt gången. (Syns iofs inte i den bifogade koden, men så är det.)
            - Vad hette La Liga då det begav sig?
            - Då Liga.

            Kommentera


            • #7
              Förlåt, inte loop.

              Vad spelar det för roll om det blir mindre kod? Man är väl ute efter att göra BRA kod.

              "Refactoring" och "återanvändbarhet" är sköna ord i min värld (åtminstone om man har någon sorts yrkesstolthet) - men i gammal ASP är det kanske inte mycket värt?
              @aviddevguy

              Kommentera


              • #8
                Allright.

                Jag säger som det är, jag har kopierat denna koden från annan plats... Den är redan återanvänd.

                Jag håller med dig i sak, men nu orkar jag inte göra det där snyggare primärt av två anledningar:
                1. Ingen kommer tacka mig för det.
                2. "If it works don't touch it."

                Dessutom är det aldrig någon som ser koden förutom när jag dristar mig till att posta koden i offentliga forum som detta!! :-)
                - Vad hette La Liga då det begav sig?
                - Då Liga.

                Kommentera

                Working...
                X