asp-classic – 如何使用经典asp中的vbscript下载文件
发布时间:2020-12-16 00:11:32 所属栏目:asp.Net 来源:网络整理
导读:我正在使用VBScript处理Classic Asp.我正在尝试使用下载选项显示目录中的文件列表.喜欢, 当我点击下载链接时,需要下载相应的文件,因为我使用了以下代码, htmlheadtitle My First ASP Page /title/headbody%Dim fsoDim ObjFolderDim ObjOutFileDim ObjFilesDi
我正在使用VBScript处理Classic Asp.我正在尝试使用下载选项显示目录中的文件列表.喜欢,
当我点击下载链接时,需要下载相应的文件,因为我使用了以下代码, <html> <head> <title> My First ASP Page </title> </head> <body> <% Dim fso Dim ObjFolder Dim ObjOutFile Dim ObjFiles Dim ObjFile 'Creating File System Object Set fso = CreateObject("Scripting.FileSystemObject") 'Getting the Folder Object Set ObjFolder = fso.GetFolder("F:karthik") 'Creating an Output File to write the File Names Set ObjOutFile = fso.CreateTextFile("F:WindowsFiles.txt") 'Getting the list of Files Set ObjFiles = ObjFolder.Files 'Writing Name and Path of each File to Output File Response.Write("<table cellpadding=""4"" cellspacing=""5"" >") For Each ObjFile In ObjFiles Response.Write("<tr><td>"&ObjFile.Name & String(50 - Len(ObjFile.Name)," ")&"</td><td><a href=""#"" language=""VBScript"" onclick=""vbscript:HTTPDownload('"&ObjFile.Path&"','C:UsersstellentDownloads')"">Download</a></td></tr>") Next Response.Write("</table>") ObjOutFile.Close %><br> <script language="vbscript" type="text/vbscript"> Sub HTTPDownload( myURL,myPath ) ' Standard housekeeping Dim i,objFile,objFSO,objHTTP,strFile,strMsg Const ForReading = 1,ForWriting = 2,ForAppending = 8 ' Create a File System Object Set objFSO = CreateObject( "Scripting.FileSystemObject" ) ' Check if the specified target file or folder exists,' and build the fully qualified path of the target file If objFSO.FolderExists( myPath ) Then strFile = objFSO.BuildPath( myPath,Mid( myURL,InStrRev( myURL,"/" ) + 1 ) ) ElseIf objFSO.FolderExists( Left( myPath,InStrRev( myPath,"" ) - 1 ) ) Then strFile = myPath Else WScript.Echo "ERROR: Target folder not found." Exit Sub End If ' Create or open the target file Set objFile = objFSO.OpenTextFile( strFile,ForWriting,True ) ' Create an HTTP object Set objHTTP = CreateObject( "WinHttp.WinHttpRequest.5.1" ) ' Download the specified URL objHTTP.Open "GET",myURL,False objHTTP.Send ' Write the downloaded byte stream to the target file For i = 1 To LenB( objHTTP.ResponseBody ) objFile.Write Chr( AscB( MidB( objHTTP.ResponseBody,i,1 ) ) ) Next ' Close the target file objFile.Close( ) End Sub </script> </body> </html> 解决方法
您似乎正在尝试使用客户端脚本在服务器端执行此操作.这是一个使用服务器端ASP发送文件的更好的解决方案.您需要将代码分成两页.
您当前的脚本应替换为: <html> <head> <title> My First ASP Page </title> </head> <body> <% Dim fso Dim ObjFolder Dim ObjOutFile Dim ObjFiles Dim ObjFile 'Creating File System Object Set fso = CreateObject("Scripting.FileSystemObject") 'Getting the Folder Object Set ObjFolder = fso.GetFolder("F:karthik") 'Getting the list of Files Set ObjFiles = ObjFolder.Files 'Writing Name and Path of each File to Output File Response.Write("<table cellpadding=""4"" cellspacing=""5"" >") For Each ObjFile In ObjFiles Response.Write("<tr><td>"&ObjFile.Name & String(50 - Len(ObjFile.Name)," ")&"</td><td><a href=""download.asp?file=" & Server.UrlEncode(ObjFile.Name) & """>Download</a></td></tr>") Next Response.Write("</table>") %><br> </body> </html> 然后你需要创建另一个我称之为download.asp的脚本来处理下载: <% Dim objConn,strFile Dim intCampaignRecipientID strFile = Request.QueryString("file") If strFile <> "" Then Response.Buffer = False Dim objStream Set objStream = Server.CreateObject("ADODB.Stream") objStream.Type = 1 'adTypeBinary objStream.Open objStream.LoadFromFile("F:karthik" & strFile) Response.ContentType = "application/x-unknown" Response.Addheader "Content-Disposition","attachment; filename=" & strFile Response.BinaryWrite objStream.Read objStream.Close Set objStream = Nothing End If %> (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
推荐文章
站长推荐
- asp.net – 为什么当试图保存更改时,GridView行“
- asp.net mvc partialview @ Ajax.ActionLink不起
- asp.net-mvc – 用于新的Asp.net CMS站点的Oxite
- Owin.IAppBuilder在asp.net中不包含“MapSignalR
- asp.net – 如何刷新.dbml同步到数据库
- asp.net – Visual Studio 2010图表控件 – 线条
- asp.net-mvc-3 – MVC3 Webgrid的服务器端分页
- asp.net core 使用 TestServer 来做集成测试
- DevExpress v17.2新版亮点—ASP.NET篇(二)
- asp.net – 在不过度使用meta:resourcekey的情况
热点阅读