Hello and welcome to our community! Is this your first visit?
Register
Enjoy an ad free experience by logging in. Not a member yet? Register.
Results 1 to 10 of 10
  1. #1
    New Coder
    Join Date
    Mar 2011
    Posts
    41
    Thanks
    16
    Thanked 0 Times in 0 Posts

    asp free upload file rename

    Hey guys,

    I'm in trouble so serious! since I'm a rookie i don't know how to rename the files with the same name in upload process.

    This was in ASP free upload FAQ section. I don't how to do it though.

    Adding 1 to repeated names is good for example if a user uploaded sample.rar if some other user upload sample.rar it change to sample1.rar.

    Could you please edit these code for me, i really appreciate it.

    uploadTester.asp
    Code:
    <%@ Language=VBScript %>
    <% 
    option explicit 
    Response.Expires = -1
    Server.ScriptTimeout = 600
    ' All communication must be in UTF-8, including the response back from the request
    Session.CodePage  = 65001
    %>
    <!-- #include file="freeaspupload.asp" -->
    <%
    
    
      ' ****************************************************
      ' Change the value of the variable below to the pathname
      ' of a directory with write permissions, for example "C:\Inetpub\wwwroot"
      ' ****************************************************
    
    
      
        Dim strPath
      strPath = Server.MapPath("uploads")
    
    
      ' Note: this file uploadTester.asp is just an example to demonstrate
      ' the capabilities of the freeASPUpload.asp class. There are no plans
      ' to add any new features to uploadTester.asp itself. Feel free to add
      ' your own code. If you are building a content management system, you
      ' may also want to consider this script: http://www.webfilebrowser.com/
    
    function OutputForm()
    %>
        <form name="frmSend" method="POST" enctype="multipart/form-data" accept-charset="utf-8" action="uploadTester.asp" onSubmit="return onSubmitForm();">
    	<B>File names:</B><br>
        File 1: <input name="attach1" type="file" size=35><br>
        File 2: <input name="attach2" type="file" size=35><br>
        File 3: <input name="attach3" type="file" size=35><br>
        File 4: <input name="attach4" type="file" size=35><br>
        <br> 
    	<!-- These input elements are obviously optional and just included here for demonstration purposes -->
    	<B>Additional fields (demo):</B><br>
    	Enter a number: <input type="text" name="enter_a_number"><br>
        Checkbox values: <input type="checkbox" value="1" name="checkbox_values"> 1 &nbsp;&nbsp;<input type="checkbox" value="2" name="checkbox_values"> 2<br>
        Drop-down list (with multiple selection): <br>	   
        <select name="list_values" class="TextBox" MULTIPLE>
            <option value='frist' > First</option>
            <option value='second' > Second</option>
            <option value='third' > Third</option>
        </select><br>
        <textarea rows="2" cols="20" name="t_area">Test text area</textarea><br>
    	<!-- End of additional elements -->
        <input style="margin-top:4" type=submit value="Upload">
        </form>
    <%
    end function
    
    function TestEnvironment()
        Dim fso, fileName, testFile, streamTest
        TestEnvironment = ""
        Set fso = Server.CreateObject("Scripting.FileSystemObject")
        if not fso.FolderExists(strPath) then
            TestEnvironment = "<B>Folder " & strPath & " does not exist.</B><br>The value of your strPath is incorrect. Open uploadTester.asp in an editor and change the value of strPath to the pathname of a directory with write permissions."
            exit function
        end if
        fileName = strPath & "\test.txt"
        on error resume next
        Set testFile = fso.CreateTextFile(fileName, true)
        If Err.Number<>0 then
            TestEnvironment = "<B>Folder " & strPath & " does not have write permissions.</B><br>The value of your strPath is incorrect. Open uploadTester.asp in an editor and change the value of strPath to the pathname of a directory with write permissions."
            exit function
        end if
        Err.Clear
        testFile.Close
        fso.DeleteFile(fileName)
        If Err.Number<>0 then
            TestEnvironment = "<B>Folder " & strPath & " does not have delete permissions</B>, although it does have write permissions.<br>Change the permissions for IUSR_<I>computername</I> on this folder."
            exit function
        end if
        Err.Clear
        Set streamTest = Server.CreateObject("ADODB.Stream")
        If Err.Number<>0 then
            TestEnvironment = "<B>The ADODB object <I>Stream</I> is not available in your server.</B><br>Check the Requirements page for information about upgrading your ADODB libraries."
            exit function
        end if
        Set streamTest = Nothing
    end function
    
    function SaveFiles
        Dim Upload, fileName, fileSize, ks, i, fileKey
    
        Set Upload = New FreeASPUpload
        Upload.Save(strPath)
    
    	' If something fails inside the script, but the exception is handled
    	If Err.Number<>0 then Exit function
    
        SaveFiles = ""
        ks = Upload.UploadedFiles.keys
        if (UBound(ks) <> -1) then
            SaveFiles = "<B>Files uploaded:</B> "
            for each fileKey in Upload.UploadedFiles.keys
                SaveFiles = SaveFiles & Upload.UploadedFiles(fileKey).FileName & " (" & Upload.UploadedFiles(fileKey).Length & "B) "
            next
        else
            SaveFiles = "No file selected for upload or the file name specified in the upload form does not correspond to a valid file in the system."
        end if
    	SaveFiles = SaveFiles & "<br>Enter a number = " & Upload.Form("enter_a_number") & "<br>"
    	SaveFiles = SaveFiles & "Checkbox values = " & Upload.Form("checkbox_values") & "<br>"
    	SaveFiles = SaveFiles & "List values = " & Upload.Form("list_values") & "<br>"
    	SaveFiles = SaveFiles & "Text area = " & Upload.Form("t_area") & "<br>"
    end function
    %>
    
    <HTML>
    <HEAD>
    <TITLE>Test Free ASP Upload 2.0</TITLE>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <style>
    BODY {background-color: white;font-family:arial; font-size:12}
    </style>
    <script>
    function onSubmitForm() {
        var formDOMObj = document.frmSend;
        if (formDOMObj.attach1.value == "" && formDOMObj.attach2.value == "" && formDOMObj.attach3.value == "" && formDOMObj.attach4.value == "" )
            alert("Please press the Browse button and pick a file.")
        else
            return true;
        return false;
    }
    </script>
    
    </HEAD>
    
    <BODY>
    
    <br><br>
    <div style="border-bottom: #A91905 2px solid;font-size:16">Upload files to your server</div>
    <%
    Dim diagnostics
    if Request.ServerVariables("REQUEST_METHOD") <> "POST" then
        diagnostics = TestEnvironment()
        if diagnostics<>"" then
            response.write "<div style=""margin-left:20; margin-top:30; margin-right:30; margin-bottom:30;"">"
            response.write diagnostics
            response.write "<p>After you correct this problem, reload the page."
            response.write "</div>"
        else
            response.write "<div style=""margin-left:150"">"
            OutputForm()
            response.write "</div>"
        end if
    else
        response.write "<div style=""margin-left:150"">"
        OutputForm()
        response.write SaveFiles()
        response.write "<br><br></div>"
    end if
    
    %>
    
    <!-- Please support this free script by having a link to freeaspupload.net either in this page or somewhere else in your site. -->
    <div style="border-bottom: #A91905 2px solid;font-size:10">Powered by <A HREF="http://www.freeaspupload.net/" style="color:black">Free ASP Upload</A></div>
    
    <br><br>
    
    <!--- START OF HTML TO REMOVE - contains the script ratings submission -->
    
    <table cellspacing=10>
    <tr><td>
    <table width="140" border="1" cellpadding="0" cellspacing="0" bordercolor="#840300" bgcolor="#D70500">
      <form action="http://www.hotscripts.com/cgi-bin/rate.cgi" method="POST">
        <tr> 
          <td><table width="100%" border="0" cellspacing="0" cellpadding="2" style="font-size:8pt">
              <tr align="center" bgcolor="#AA0400"> 
                <td colspan="2"><b><font color="#FFFFFF">Rate Our Program<br>at Hotscripts.com
                  <input type="hidden" name="ID" value="21966">
                  <input type="hidden" name="external2" value="1">
                  </font></b></td>
              </tr>
              <tr> 
                <td align="right"><input type="radio" value="5" name="rate"></td>
                <td><font color="#FFFFFF">Excellent!</font></td>
              </tr>
              <tr> 
                <td align="right"><input type="radio" value="4" name="rate"></td>
                <td><font color="#FFFFFF">Very Good</font></td>
              </tr>
              <tr> 
                <td align="right"><input type="radio" value="3" name="rate"></td>
                <td><font color="#FFFFFF">Good</font></td>
              </tr>
              <tr> 
                <td align="right"><input type="radio" value="2" name="rate"></td>
                <td><font color="#FFFFFF">Fair</font></td>
              </tr>
              <tr> 
                <td align="right"><input type="radio" value="1" name="rate"></td>
                <td><font color="#FFFFFF">Poor</font></td>
              </tr>
              <tr align="center"> 
                <td colspan="2"><input name="submit2" type="submit" value="Cast My Vote!"></td>
              </tr>
            </table></td>
        </tr>
      </form>
    </table>
    
    <td valign=top>
    
    <table border=0 cellpadding=1 cellspacing=0 bgcolor=000000>
    <tr><td align=center>
    	<table border=0 cellpadding=3 cellspacing=0 bgcolor=eeeedd>
    	<tr><td align=center nowrap>
    		<font style="font-size:10pt;font-family:Arial;"><b>Rated:</b> <a href="http://www.Aspin.com/func/review?id=5380510"><img src=http://ratings.Aspin.com/getstars?id=5380510 border=0></a>
    		<font style="font-size:8pt;"><br>by <a href="http://www.Aspin.com">Aspin.com</a> users<br></font></font>
    	</td></tr><tr nowrap><form action="http://www.Aspin.com/func/review/write?id=5380510" method=post><td align=center>
    		<font style="font-size:10pt;font-family:Arial;">What do you think?</font><br>
    		<select name="VoteStars"><option>5 Stars<option>4 Stars<option>3 Stars<option>2 Stars<option>1 Star</select><input type=submit value="Vote">
    	</td></form></tr></table>
    </td></tr></table>
    
    <td valign=top style="font-size:10pt" width=300>
    
    Please support this free script by rating it with the boxes on the left.<p>
    To remove these boxes from this page please follow the instructions in the source HTML. The code to remove is clearly indicated and very easy to find.<p>
    Thank you.
    </table>
    <!-- end of html to remove ------------------------->
    
    </BODY>
    </HTML>



    Next Post ...

  • #2
    New Coder
    Join Date
    Mar 2011
    Posts
    41
    Thanks
    16
    Thanked 0 Times in 0 Posts
    ... continue


    freeASPUpload.asp
    Code:
    <%
    '  For examples, documentation, and your own free copy, go to:
    '  http://www.freeaspupload.net
    '  Note: You can copy and use this script for free and you can make changes
    '  to the code, but you cannot remove the above comment.
    
    'Changes:
    'Aug 2, 2005: Add support for checkboxes and other input elements with multiple values
    'Jan 6, 2009: Lars added ASP_CHUNK_SIZE
    'Sep 3, 2010: Enforce UTF-8 everywhere; new function to convert byte array to unicode string
    
    const DEFAULT_ASP_CHUNK_SIZE = 200000
    
    const adModeReadWrite = 3
    const adTypeBinary = 1
    const adTypeText = 2
    const adSaveCreateOverWrite = 2
    
    Class FreeASPUpload
    	Public UploadedFiles
    	Public FormElements
    
    	Private VarArrayBinRequest
    	Private StreamRequest
    	Private uploadedYet
    	Private internalChunkSize
    
    	Private Sub Class_Initialize()
    		Set UploadedFiles = Server.CreateObject("Scripting.Dictionary")
    		Set FormElements = Server.CreateObject("Scripting.Dictionary")
    		Set StreamRequest = Server.CreateObject("ADODB.Stream")
    		StreamRequest.Type = adTypeText
    		StreamRequest.Open
    		uploadedYet = false
    		internalChunkSize = DEFAULT_ASP_CHUNK_SIZE
    	End Sub
    	
    	Private Sub Class_Terminate()
    		If IsObject(UploadedFiles) Then
    			UploadedFiles.RemoveAll()
    			Set UploadedFiles = Nothing
    		End If
    		If IsObject(FormElements) Then
    			FormElements.RemoveAll()
    			Set FormElements = Nothing
    		End If
    		StreamRequest.Close
    		Set StreamRequest = Nothing
    	End Sub
    
    	Public Property Get Form(sIndex)
    		Form = ""
    		If FormElements.Exists(LCase(sIndex)) Then Form = FormElements.Item(LCase(sIndex))
    	End Property
    
    	Public Property Get Files()
    		Files = UploadedFiles.Items
    	End Property
    	
        Public Property Get Exists(sIndex)
                Exists = false
                If FormElements.Exists(LCase(sIndex)) Then Exists = true
        End Property
            
        Public Property Get FileExists(sIndex)
            FileExists = false
                if UploadedFiles.Exists(LCase(sIndex)) then FileExists = true
        End Property
            
        Public Property Get chunkSize()
    		chunkSize = internalChunkSize
    	End Property
    
    	Public Property Let chunkSize(sz)
    		internalChunkSize = sz
    	End Property
    
    	'Calls Upload to extract the data from the binary request and then saves the uploaded files
    	Public Sub Save(path)
    		Dim streamFile, fileItem, filePath
    
    		if Right(path, 1) <> "\" then path = path & "\"
    
    		if not uploadedYet then Upload
    
    		For Each fileItem In UploadedFiles.Items
    			filePath = path & fileItem.FileName
    			Set streamFile = Server.CreateObject("ADODB.Stream")
    			streamFile.Type = adTypeBinary
    			streamFile.Open
    			StreamRequest.Position=fileItem.Start
    			StreamRequest.CopyTo streamFile, fileItem.Length
    			streamFile.SaveToFile filePath, adSaveCreateOverWrite
    			streamFile.close
    			Set streamFile = Nothing
    			fileItem.Path = filePath
    		 Next
    	End Sub
    	
    	public sub SaveOne(path, num, byref outFileName, byref outLocalFileName)
    		Dim streamFile, fileItems, fileItem, fs
    
            set fs = Server.CreateObject("Scripting.FileSystemObject")
    		objfilesys.MoveFile Server.MapPath("uploads" & arrX(intx)), "uploads" & rs.Fields("requisitionID").Value & "/" 
    		if Right(path, 1) <> "\" then path = path & "\"
    
    		if not uploadedYet then Upload
    		if UploadedFiles.Count > 0 then
    			fileItems = UploadedFiles.Items
    			set fileItem = fileItems(num)
    		
    			outFileName = fileItem.FileName
    			outLocalFileName = GetFileName(path, outFileName)
    		
    			Set streamFile = Server.CreateObject("ADODB.Stream")
    			streamFile.Type = adTypeBinary
    			streamFile.Open
    			StreamRequest.Position = fileItem.Start
    			StreamRequest.CopyTo streamFile, fileItem.Length
    			streamFile.SaveToFile path & outLocalFileName, adSaveCreateOverWrite
    			streamFile.close
    			Set streamFile = Nothing
    			fileItem.Path = path & filename
    		end if
    	end sub
    
    	Public Function SaveBinRequest(path) ' For debugging purposes
    		StreamRequest.SaveToFile path & "\debugStream.bin", 2
    	End Function
    
    	Public Sub DumpData() 'only works if files are plain text
    		Dim i, aKeys, f
    		response.write "Form Items:<br>"
    		aKeys = FormElements.Keys
    		For i = 0 To FormElements.Count -1 ' Iterate the array
    			response.write aKeys(i) & " = " & FormElements.Item(aKeys(i)) & "<BR>"
    		Next
    		response.write "Uploaded Files:<br>"
    		For Each f In UploadedFiles.Items
    			response.write "Name: " & f.FileName & "<br>"
    			response.write "Type: " & f.ContentType & "<br>"
    			response.write "Start: " & f.Start & "<br>"
    			response.write "Size: " & f.Length & "<br>"
    		 Next
       	End Sub
    
    	Public Sub Upload()
    		Dim nCurPos, nDataBoundPos, nLastSepPos
    		Dim nPosFile, nPosBound
    		Dim sFieldName, osPathSep, auxStr
    		Dim readBytes, readLoop, tmpBinRequest
    		
    		'RFC1867 Tokens
    		Dim vDataSep
    		Dim tNewLine, tDoubleQuotes, tTerm, tFilename, tName, tContentDisp, tContentType
    		tNewLine = String2Byte(Chr(13))
    		tDoubleQuotes = String2Byte(Chr(34))
    		tTerm = String2Byte("--")
    		tFilename = String2Byte("filename=""")
    		tName = String2Byte("name=""")
    		tContentDisp = String2Byte("Content-Disposition")
    		tContentType = String2Byte("Content-Type:")
    
    		uploadedYet = true
    
    		on error resume next
    			' Copy binary request to a byte array, on which functions like InstrB and others can be used to search for separation tokens
    			readBytes = internalChunkSize
    			VarArrayBinRequest = Request.BinaryRead(readBytes)
    			VarArrayBinRequest = midb(VarArrayBinRequest, 1, lenb(VarArrayBinRequest))
    			Do Until readBytes < 1
    				tmpBinRequest = Request.BinaryRead(readBytes)
    				if readBytes > 0 then
    					VarArrayBinRequest = VarArrayBinRequest & midb(tmpBinRequest, 1, lenb(tmpBinRequest))
    				end if
    			Loop
    			StreamRequest.WriteText(VarArrayBinRequest)
    			StreamRequest.Flush()
    			if Err.Number <> 0 then 
    				response.write "<br><br><B>System reported this error:</B><p>"
    				response.write Err.Description & "<p>"
    				response.write "The most likely cause for this error is the incorrect setup of AspMaxRequestEntityAllowed in IIS MetaBase. Please see instructions in the <A HREF='http://www.freeaspupload.net/freeaspupload/requirements.asp'>requirements page of freeaspupload.net</A>.<p>"
    				Exit Sub
    			end if
    		on error goto 0 'reset error handling
    
    		nCurPos = FindToken(tNewLine,1) 'Note: nCurPos is 1-based (and so is InstrB, MidB, etc)
    
    		If nCurPos <= 1  Then Exit Sub
    		 
    		'vDataSep is a separator like -----------------------------21763138716045
    		vDataSep = MidB(VarArrayBinRequest, 1, nCurPos-1)
    
    		'Start of current separator
    		nDataBoundPos = 1
    
    		'Beginning of last line
    		nLastSepPos = FindToken(vDataSep & tTerm, 1)
    
    		Do Until nDataBoundPos = nLastSepPos
    			
    			nCurPos = SkipToken(tContentDisp, nDataBoundPos)
    			nCurPos = SkipToken(tName, nCurPos)
    			sFieldName = ExtractField(tDoubleQuotes, nCurPos)
    
    			nPosFile = FindToken(tFilename, nCurPos)
    			nPosBound = FindToken(vDataSep, nCurPos)
    			
    			If nPosFile <> 0 And  nPosFile < nPosBound Then
    				Dim oUploadFile
    				Set oUploadFile = New UploadedFile
    				
    				nCurPos = SkipToken(tFilename, nCurPos)
    				auxStr = ExtractField(tDoubleQuotes, nCurPos)
                    ' We are interested only in the name of the file, not the whole path
                    ' Path separator is \ in windows, / in UNIX
                    ' While IE seems to put the whole pathname in the stream, Mozilla seem to 
                    ' only put the actual file name, so UNIX paths may be rare. But not impossible.
                    osPathSep = "\"
                    if InStr(auxStr, osPathSep) = 0 then osPathSep = "/"
    				oUploadFile.FileName = Right(auxStr, Len(auxStr)-InStrRev(auxStr, osPathSep))
    
    				if (Len(oUploadFile.FileName) > 0) then 'File field not left empty
    					nCurPos = SkipToken(tContentType, nCurPos)
    					
                        auxStr = ExtractField(tNewLine, nCurPos)
                        ' NN on UNIX puts things like this in the stream:
                        '    ?? python py type=?? python application/x-python
    					oUploadFile.ContentType = Right(auxStr, Len(auxStr)-InStrRev(auxStr, " "))
    					nCurPos = FindToken(tNewLine, nCurPos) + 4 'skip empty line
    					
    					oUploadFile.Start = nCurPos+1
    					oUploadFile.Length = FindToken(vDataSep, nCurPos) - 2 - nCurPos
    					
    					If oUploadFile.Length > 0 Then UploadedFiles.Add LCase(sFieldName), oUploadFile
    				End If
    			Else
    				Dim nEndOfData, fieldValueUniStr
    				nCurPos = FindToken(tNewLine, nCurPos) + 4 'skip empty line
    				nEndOfData = FindToken(vDataSep, nCurPos) - 2
    				fieldValueuniStr = ConvertUtf8BytesToString(nCurPos, nEndOfData-nCurPos)
    				If Not FormElements.Exists(LCase(sFieldName)) Then 
    					FormElements.Add LCase(sFieldName), fieldValueuniStr
    				else
                        FormElements.Item(LCase(sFieldName))= FormElements.Item(LCase(sFieldName)) & ", " & fieldValueuniStr
                    end if 
    
    			End If
    
    			'Advance to next separator
    			nDataBoundPos = FindToken(vDataSep, nCurPos)
    		Loop
    	End Sub
    
    	Private Function SkipToken(sToken, nStart)
    		SkipToken = InstrB(nStart, VarArrayBinRequest, sToken)
    		If SkipToken = 0 then
    			Response.write "Error in parsing uploaded binary request. The most likely cause for this error is the incorrect setup of AspMaxRequestEntityAllowed in IIS MetaBase. Please see instructions in the <A HREF='http://www.freeaspupload.net/freeaspupload/requirements.asp'>requirements page of freeaspupload.net</A>.<p>"
    			Response.End
    		end if
    		SkipToken = SkipToken + LenB(sToken)
    	End Function
    
    	Private Function FindToken(sToken, nStart)
    		FindToken = InstrB(nStart, VarArrayBinRequest, sToken)
    	End Function
    
    	Private Function ExtractField(sToken, nStart)
    		Dim nEnd
    		nEnd = InstrB(nStart, VarArrayBinRequest, sToken)
    		If nEnd = 0 then
    			Response.write "Error in parsing uploaded binary request."
    			Response.End
    		end if
    		ExtractField = ConvertUtf8BytesToString(nStart, nEnd-nStart)
    	End Function
    
    	'String to byte string conversion
    	Private Function String2Byte(sString)
    		Dim i
    		For i = 1 to Len(sString)
    		   String2Byte = String2Byte & ChrB(AscB(Mid(sString,i,1)))
    		Next
    	End Function
    
    	Private Function ConvertUtf8BytesToString(start, length)	
    		StreamRequest.Position = 0
    	
    	    Dim objStream
    	    Dim strTmp
    	    
    	    ' init stream
    	    Set objStream = Server.CreateObject("ADODB.Stream")
    	    objStream.Charset = "utf-8"
    	    objStream.Mode = adModeReadWrite
    	    objStream.Type = adTypeBinary
    	    objStream.Open
    	    
    	    ' write bytes into stream
    	    StreamRequest.Position = start+1
    	    StreamRequest.CopyTo objStream, length
    	    objStream.Flush
    	    
    	    ' rewind stream and read text
    	    objStream.Position = 0
    	    objStream.Type = adTypeText
    	    strTmp = objStream.ReadText
    	    
    	    ' close up and return
    	    objStream.Close
    	    Set objStream = Nothing
    	    ConvertUtf8BytesToString = strTmp	
    	End Function
    End Class
    
    Class UploadedFile
    	Public ContentType
    	Public Start
    	Public Length
    	Public Path
    	Private nameOfFile
    
        ' Need to remove characters that are valid in UNIX, but not in Windows
        Public Property Let FileName(fN)
            nameOfFile = fN
            nameOfFile = SubstNoReg(nameOfFile, "\", "_")
            nameOfFile = SubstNoReg(nameOfFile, "/", "_")
            nameOfFile = SubstNoReg(nameOfFile, ":", "_")
            nameOfFile = SubstNoReg(nameOfFile, "*", "_")
            nameOfFile = SubstNoReg(nameOfFile, "?", "_")
            nameOfFile = SubstNoReg(nameOfFile, """", "_")
            nameOfFile = SubstNoReg(nameOfFile, "<", "_")
            nameOfFile = SubstNoReg(nameOfFile, ">", "_")
            nameOfFile = SubstNoReg(nameOfFile, "|", "_")
        End Property
    
        Public Property Get FileName()
            FileName = nameOfFile
        End Property
    
        'Public Property Get FileN()ame
    End Class
    
    
    ' Does not depend on RegEx, which is not available on older VBScript
    ' Is not recursive, which means it will not run out of stack space
    Function SubstNoReg(initialStr, oldStr, newStr)
        Dim currentPos, oldStrPos, skip
        If IsNull(initialStr) Or Len(initialStr) = 0 Then
            SubstNoReg = ""
        ElseIf IsNull(oldStr) Or Len(oldStr) = 0 Then
            SubstNoReg = initialStr
        Else
            If IsNull(newStr) Then newStr = ""
            currentPos = 1
            oldStrPos = 0
            SubstNoReg = ""
            skip = Len(oldStr)
            Do While currentPos <= Len(initialStr)
                oldStrPos = InStr(currentPos, initialStr, oldStr)
                If oldStrPos = 0 Then
                    SubstNoReg = SubstNoReg & Mid(initialStr, currentPos, Len(initialStr) - currentPos + 1)
                    currentPos = Len(initialStr) + 1
                Else
                    SubstNoReg = SubstNoReg & Mid(initialStr, currentPos, oldStrPos - currentPos) & newStr
                    currentPos = oldStrPos + skip
                End If
            Loop
        End If
    End Function
    
    Function GetFileName(strSaveToPath, FileName)
    'This function is used when saving a file to check there is not already a file with the same name so that you don't overwrite it.
    'It adds numbers to the filename e.g. file.gif becomes file1.gif becomes file2.gif and so on.
    'It keeps going until it returns a filename that does not exist.
    'You could just create a filename from the ID field but that means writing the record - and it still might exist!
    'N.B. Requires strSaveToPath variable to be available - and containing the path to save to
        Dim Counter
        Dim Flag
        Dim strTempFileName
        Dim FileExt
        Dim NewFullPath
        dim objFSO, p
        Set objFSO = CreateObject("Scripting.FileSystemObject")
    	objfilesys.MoveFile Server.MapPath("uploads" & arrX(intx)), "uploads" & rs.Fields("requisitionID").Value & "/" 
    
        Counter = 0
        p = instrrev(FileName, ".")
        FileExt = mid(FileName, p+1)
        strTempFileName = left(FileName, p-1)
        NewFullPath = strSaveToPath & "\" & FileName
        Flag = False
        
        Do Until Flag = True
            If objFSO.FileExists(NewFullPath) = False Then
                Flag = True
                GetFileName = Mid(NewFullPath, InstrRev(NewFullPath, "\") + 1)
            Else
                Counter = Counter + 1
                NewFullPath = strSaveToPath & "\" & strTempFileName & Counter & "." & FileExt
            End If
        Loop
    End Function 
     
    %>

  • #3
    New Coder
    Join Date
    Mar 2011
    Posts
    41
    Thanks
    16
    Thanked 0 Times in 0 Posts
    help me out here folks

  • #4
    Supreme Master coder! Old Pedant's Avatar
    Join Date
    Feb 2009
    Posts
    25,020
    Thanks
    75
    Thanked 4,323 Times in 4,289 Posts
    Would help if you would show your actual code that you are going to use instead of just that sample code.

    Basically, what you would do is insert code *BETWEEN* these two lines in your actual code:
    Code:
        Set Upload = New FreeASPUpload
        Upload.Save(strPath)
    *SOMETHING* like
    Code:
        Upload.uploadedFiles.Items(0).fileName = "newname.txt"
    But an easier way, and one that might work better if you are allowing uploads of multiple files at one time, might be to specify a temp directory to save the files to and then, *AFTER* they are saved, use the Scripting.FileSystemObject.MoveFile method to move each file from the temp directory to its permanent directory and name.
    An optimist sees the glass as half full.
    A pessimist sees the glass as half empty.
    A realist drinks it no matter how much there is.

  • #5
    New Coder
    Join Date
    Mar 2011
    Posts
    41
    Thanks
    16
    Thanked 0 Times in 0 Posts
    Quote Originally Posted by Old Pedant View Post
    Would help if you would show your actual code that you are going to use instead of just that sample code.

    Basically, what you would do is insert code *BETWEEN* these two lines in your actual code:
    Code:
        Set Upload = New FreeASPUpload
        Upload.Save(strPath)
    *SOMETHING* like
    Code:
        Upload.uploadedFiles.Items(0).fileName = "newname.txt"
    But an easier way, and one that might work better if you are allowing uploads of multiple files at one time, might be to specify a temp directory to save the files to and then, *AFTER* they are saved, use the Scripting.FileSystemObject.MoveFile method to move each file from the temp directory to its permanent directory and name.

    I'm going to use that code so that's my actual code. I place that line between those codes and it still replace files with the same name. I just need to save all of my files into one folder so MoveFile is not actually what I want. I just want to prevent overwritten for files with the same name!

    here is what I meant (quoted from some asp upload). i just need to do this with asp free upload component.

    Unique File Name Generation

    By default, AspUpload overwrites existing files in the upload directory. In a multi-user environment, this is undesirable, as multiple users may upload files with the same name.

    AspUpload can be configured to generate unique names for the files being uploaded to prevent overwriting existing files in the upload directory. This is done by setting UploadManager's OverwriteFiles property to False before calling Upload.Save, as follows:

    Upload.OverwriteFiles = False

    For example, if the file MyFile.txt already exists in the upload directory, and another file with the same name is being uploaded, AspUpload will save the new file under the name MyFile(1).txt. If more copies of MyFile.txt are uploaded, they will be saved under the names MyFile(2).txt, MyFile(3).txt, etc.
    Help a rookie out thanks.

  • #6
    Supreme Master coder! Old Pedant's Avatar
    Join Date
    Feb 2009
    Posts
    25,020
    Thanks
    75
    Thanked 4,323 Times in 4,289 Posts
    So just follow directions.

    Did you even try to put in that line?

    It must go directly after the initial creation of the upload object.
    Code:
        ...
        Set Upload = New FreeASPUpload
        Upload.OverwriteFiles = False
        Upload.Save(strPath)
        ...
    No idea if that will actually work. If the author says it does, then hopefully he is correct.

    You should realize that the code there is only an *example* of how you can use this tool. It may or may not be the best way to use it in your own environment.
    An optimist sees the glass as half full.
    A pessimist sees the glass as half empty.
    A realist drinks it no matter how much there is.

  • #7
    New Coder
    Join Date
    Mar 2011
    Posts
    41
    Thanks
    16
    Thanked 0 Times in 0 Posts
    Quote Originally Posted by Old Pedant View Post
    So just follow directions.

    Did you even try to put in that line?

    It must go directly after the initial creation of the upload object.
    Code:
        ...
        Set Upload = New FreeASPUpload
        Upload.OverwriteFiles = False
        Upload.Save(strPath)
        ...
    No idea if that will actually work. If the author says it does, then hopefully he is correct.

    You should realize that the code there is only an *example* of how you can use this tool. It may or may not be the best way to use it in your own environment.
    Sorry to make you confused but Upload.OverwriteFiles = False is not valid within asp free upload, you see that's for asp upload component not asp free upload component (these are torally different from each other) i just mentioned that quote from asp upload in case of better understanding of what I need to do which is adding 1 to files with the same name so For example, if the file MyFile.txt already exists in the upload directory, and another file with the same name is being uploaded, AspUpload will save the new file under the name MyFile(1).txt. If more copies of MyFile.txt are uploaded, they will be saved under the names MyFile(2).txt, MyFile(3).txt, etc.

    I just need to prevent overwritten for files with the same name in asp free upload component without moving each file to other folders and etc since I just have one folder named uploads and my users upload their files in there using asp free upload integrated in my page. I'm such a rookie!

  • #8
    Supreme Master coder! Old Pedant's Avatar
    Join Date
    Feb 2009
    Posts
    25,020
    Thanks
    75
    Thanked 4,323 Times in 4,289 Posts
    Hmmm...this really doesn't make sense.

    I saw the code in there for the function GetFileName and it seemed like it is doing what you want. At least the comments just before the function seemed to say so.

    And then the function *IS* being called as part of the save-to-file code:
    Code:
    			outFileName = fileItem.FileName
    			outLocalFileName = GetFileName(path, outFileName)
    BUT...

    But both the code in the function and code in the main save-to-files have a reference to an ADODB.Recordset object and field therein:
    Code:
    rs.Fields("requisitionID").Value
    And yet there is no place in that code that opens up such a recordset.

    So clearly (a) you aren't showing us all the code and (b) somebody has made modifications to that Free ASP Upload, because the original code certainly never used a recordset.

    Methinks you need to find the person who modified the original code and get them to fix up their changes.
    An optimist sees the glass as half full.
    A pessimist sees the glass as half empty.
    A realist drinks it no matter how much there is.

  • #9
    New Coder
    Join Date
    Mar 2011
    Posts
    41
    Thanks
    16
    Thanked 0 Times in 0 Posts
    Quote Originally Posted by Old Pedant View Post
    Hmmm...this really doesn't make sense.

    I saw the code in there for the function GetFileName and it seemed like it is doing what you want. At least the comments just before the function seemed to say so.

    And then the function *IS* being called as part of the save-to-file code:
    Code:
    			outFileName = fileItem.FileName
    			outLocalFileName = GetFileName(path, outFileName)
    BUT...

    But both the code in the function and code in the main save-to-files have a reference to an ADODB.Recordset object and field therein:
    Code:
    rs.Fields("requisitionID").Value
    And yet there is no place in that code that opens up such a recordset.

    So clearly (a) you aren't showing us all the code and (b) somebody has made modifications to that Free ASP Upload, because the original code certainly never used a recordset.

    Methinks you need to find the person who modified the original code and get them to fix up their changes.
    I didn't modify it, I directly download this code from www.freeaspupload.net. I didn't use any recordset within this,I didn't change this code at all.

    Well I don't know how this guy comment that but somehow that function ain't working and files with same name keep overwriting.

    Lets just think for a moment, what would you do if you need to prevent overwritten for your files with the same name except moving them to other folders (just like what I said like adding numbers to files with the same name) how do you come by this? I mean I'm really confused myself (if you already solved this before or if you have any other free component which solved this overwritten issue Ill be very happy if you help me out with that.)

    I think it'll be best if you download that component and check it out yourself.
    thanks.
    Last edited by Datis; 04-13-2012 at 10:25 PM.

  • #10
    Supreme Master coder! Old Pedant's Avatar
    Join Date
    Feb 2009
    Posts
    25,020
    Thanks
    75
    Thanked 4,323 Times in 4,289 Posts
    Well, *SOMEBODY* is trying to use a recordset in there:
    Code:
    objfilesys.MoveFile Server.MapPath("uploads" & arrX(intx)), "uploads" & rs.Fields("requisitionID").Value & "/"
    The line is used both in the main code and that getFileName code.

    It is a vital piece of the process, it looks like.

    Maybe you need to re-download the code? Or find a different free asp upload? There are tons of them out there.

    Better, of course, would be to use an ActiveX based uploader. But I don't know of any free ones. The one from Persits is the best, in my opinion. It's not free, but it's not too expensive. And it is included for free in many hosting packages. For example, all GoDaddy Windows packages include it.

    Anyway, if you don't know what the purpose of that "requisitionid" stuff is, then I think you downloaded something that wasn't meant for general usage.
    An optimist sees the glass as half full.
    A pessimist sees the glass as half empty.
    A realist drinks it no matter how much there is.


  •  

    Posting Permissions

    • You may not post new threads
    • You may not post replies
    • You may not post attachments
    • You may not edit your posts
    •