2013-10-07 42 views
1

我有一箇舊的VBScript函數可以從URL中保存服務器上的文件副本。如果該文件已經存在,該功能將刪除以前的版本並重寫新的文件版本。問題是我需要插入區分大小寫的文件名。例如,文件名「Test.html」和「test.html」應該保存爲不同的副本,我的功能只是替換它們。任何建議?使用帶有區分大小寫的文件名的文件系統對象

功能:

Public Function SaveToChache(Url, SaveToFolder, FileName) 
    Dim ChacheFolder: ChacheFolder = SaveToFolder 'Folder where will the cache files be stored (include trailing slash) 
    Dim FilePath: FilePath = Server.MapPath(ChacheFolder & FileName) 
    Dim objXMLHTTP: Set objXMLHTTP = CreateObject("WinHttp.WinHttpRequest.5.1") 
    objXMLHTTP.open "GET", Url, false 
    objXMLHTTP.send() 
    If objXMLHTTP.Status = 200 Then 
     Dim objADOStream: Set objADOStream = CreateObject("ADODB.Stream") 
     objADOStream.Open 
     objADOStream.Type = 1 'adTypeBinary 
     objADOStream.Write objXMLHTTP.ResponseBody 
     objADOStream.Position = 0 'Set the stream position to the start 
     Dim objFSO: Set objFSO = Createobject("Scripting.FileSystemObject") 
     If objFSO.FileExists(FilePath) Then objFSO.DeleteFile FilePath 
     Set objFSO = Nothing 
     objADOStream.SaveToFile FilePath 
     objADOStream.Close 
     Set objADOStream = Nothing 
     SaveToChache = objXMLHTTP.getResponseHeader("Content-Type") 
    Else 
     SaveToChache = "" 
    End if 
    Set objXMLHTTP = Nothing 
End Function 

調用函數:

savefile = SaveToChache("http://www.example.com", "/cache/", "Test.html") 

謝謝!

+2

請參閱[關於SU的這個問題](http://superuser.com/q/266110)的答案,瞭解爲什麼這在原則上是可能的,但通常在實踐中不可行(並且可以說甚至不可取) 。 –

+0

那麼,必須在服務器設置中進行更改? – afazolo

+0

在內核配置中,是的。 –

回答

0

我會使用直接比較而不是objFSO.FileExists

例如:

Dim objFSO: Set objFSO = Createobject("Scripting.FileSystemObject") 
FilePath = "C:\Test\test.txt" 

'Get path to file 
strParentPath = objFSO.GetFile(FilePath).ParentFolder 
'Get each file in the folder 
Set objCheck = objFSO.GetFolder(strParentPath).Files 

For Each x In objCheck 
    If x = FilePath Then objFSO.DeleteFile(FilePath) 
Next 

基本上,X將僅等於文件路徑,如果情況也是相同的。

+0

不幸的是,它不適合我!我得到ADODB.Stream erro'800a0bbc'錯誤。 – afazolo

相關問題