标签:may rmi set com hat settings star 获取文件夹 cto
关于如何使用IIS创建asp服务,请读者自行研究
根目录
filecloudEV.html 提前验证
filecloudEV.aspx 判断密码是否正确
filecloudMAIN.aspx 主界面
UpLoad.asp 上传界面
SaveFile.asp 保存文件
InputFilename.aspx 让用户输入文件名
AddPath.aspx 将当前文件加入文件清单
clsField.asp 文件上传的底层支持代码
clsUpload.asp 文件上传的底层支持代码
DownLoad.aspx 下载界面
list.txt 用户上传的文件的清单
files 用户上传的文件的储存文件夹
<html> <head> <title>filecloud early verification</title> <meta charset="UTF-8"></meta> </head> <body> <form action="filecloudEV.aspx" method="post"> <center> <p style="font-size:50px;">Password</p> <input type="password" name="password" style="font-size:50px;"></input> <input type="submit" value="Submit" style="font-size:50px;"></input> </center> </form> </body> </html>
一个文本框,将用户输入的密码传到filecloudEV.aspx里面去
<html> <head> <title>filecloud early verification</title> <meta charset="UTF-8"></meta> </head> <body> <% dim a a=Request.Form("password") response.write("<center><p style=""font-size:30px"">") if a="XXXXXXX" then ‘验证密码是否正确 response.write("Password is right!")%> <form action="filecloudMAIN.aspx" method="post"><!--只有正确才显示这个跳转按钮--> <input type="submit" value="跳转" style="font-size:30px"></input> </form> <% else response.write("Password is wrong!") response.write("Please go back") end if response.write("</p></center>") %> </body> </html>
然后进入主界面:
<html> <head> <title>FilecloudMAIN</title> <meta charset="UTF-8"></meta> </head> <body> <center> <a href="./UpLoad.asp" style="font-size:50px">UpLoad</a><br /><br /> <a href="./DownLoad.aspx" style="font-size:50px">DownLoad</a><br /><br /> </center> </body> </html>
其实就只是显示了两个超链接:
先来介绍一下上传:
<html> <head> <title>UpLoad</title> <meta charset="UTF-8"> </head> <body> <form method="post" encType="multipart/form-data" action="SaveFile.asp"> <input type="File" name="File1"> <input type="Submit" value="Upload"> </form> </body> </html>
把文件流传到SaveFile.asp中
<!--#INCLUDE FILE="clsUpload.asp"--> <!--引用clsUpLoad.asp--> <html> <head> <title>SaveFile</title> <meta charset="UTF-8"> </head> <body> <% Dim Upload Dim Folder Set Upload = New clsUpload Folder = Server.MapPath("Uploads") & "\" ‘绑定储存文件的路径 Upload("File1").SaveAs Folder & Upload("File1").FileName ‘保存文件 Set Upload = Nothing Response.Write("<script>alert(‘UpLoad Success!‘);window.location.href=‘InputFilename.aspx‘</script>") ‘跳转到InputFilename.aspx %> </body> </html>
接下来介绍一下clsUpload.asp
声明:这个文件以及下面的clsField.asp都是我从Stack Overflow中找到的
<!--METADATA TYPE="TypeLib" NAME="Microsoft ActiveX Data Objects 2.5 Library" UUID="{00000205-0000-0010-8000-00AA006D2EA4}" VERSION="2.5" --> <!--#INCLUDE FILE="clsField.asp"--> ? <% ‘ ------------------------------------------------------------------------------ ‘ Author: Lewis Moten ‘ Date: March 19, 2002 ‘ ------------------------------------------------------------------------------ ? ‘ Upload class retrieves multi-part form data posted to web page ‘ and parses it into objects that are easy to interface with. ‘ Requires MDAC (ADODB) COM components found on most servers today ‘ Additional compenents are not necessary. ‘ ? Class clsUpload ‘ ------------------------------------------------------------------------------ ? Private mbinData ‘ bytes visitor sent to server Private mlngChunkIndex ‘ byte where next chunk starts Private mlngBytesReceived ‘ length of data Private mstrDelimiter ‘ Delimiter between multipart/form-data (43 chars) ? Private CR ‘ ANSI Carriage Return Private LF ‘ ANSI Line Feed Private CRLF ‘ ANSI Carriage Return & Line Feed ? Private mobjFieldAry() ‘ Array to hold field objects Private mlngCount ‘ Number of fields parsed ? ‘ ------------------------------------------------------------------------------ Private Sub RequestData ? Dim llngLength ‘ Number of bytes received ? ‘ Determine number bytes visitor sent mlngBytesReceived = Request.TotalBytes ? ‘ Store bytes recieved from visitor mbinData = Request.BinaryRead(mlngBytesReceived) ? End Sub ‘ ------------------------------------------------------------------------------ Private Sub ParseDelimiter() ? ‘ Delimiter seperates multiple pieces of form data ‘ "around" 43 characters in length ‘ next character afterwards is carriage return (except last line has two --) ‘ first part of delmiter is dashes followed by hex number ‘ hex number is possibly the browsers session id? ? ‘ Examples: ? ‘ -----------------------------7d230d1f940246 ‘ -----------------------------7d22ee291ae0114 ? mstrDelimiter = MidB(mbinData, 1, InStrB(1, mbinData, CRLF) - 1) ? End Sub ‘ ------------------------------------------------------------------------------ Private Sub ParseData() ? ‘ This procedure loops through each section (chunk) found within the ‘ delimiters and sends them to the parse chunk routine ? Dim llngStart ‘ start position of chunk data Dim llngLength ‘ Length of chunk Dim llngEnd ‘ Last position of chunk data Dim lbinChunk ‘ Binary contents of chunk ? ‘ Initialize at first character llngStart = 1 ? ‘ Find start position llngStart = InStrB(llngStart, mbinData, mstrDelimiter & CRLF) ? ‘ While the start posotion was found While Not llngStart = 0 ? ‘ Find the end position (after the start position) llngEnd = InStrB(llngStart + 1, mbinData, mstrDelimiter) - 2 ? ‘ Determine Length of chunk llngLength = llngEnd - llngStart ? ‘ Pull out the chunk lbinChunk = MidB(mbinData, llngStart, llngLength) ? ‘ Parse the chunk Call ParseChunk(lbinChunk) ? ‘ Look for next chunk after the start position llngStart = InStrB(llngStart + 1, mbinData, mstrDelimiter & CRLF) ? Wend ? End Sub ‘ ------------------------------------------------------------------------------ Private Sub ParseChunk(ByRef pbinChunk) ? ‘ This procedure gets a chunk passed to it and parses its contents. ‘ There is a general format that the chunk follows. ? ‘ First, the deliminator appears ? ‘ Next, headers are listed on each line that define properties of the chunk. ? ‘ Content-Disposition: form-data: name="File1"; filename="C:\Photo.gif" ‘ Content-Type: image/gif ? ‘ After this, a blank line appears and is followed by the binary data. ? Dim lstrName ‘ Name of field Dim lstrFileName ‘ File name of binary data Dim lstrContentType ‘ Content type of binary data Dim lbinData ‘ Binary data Dim lstrDisposition ‘ Content Disposition Dim lstrValue ‘ Value of field ? ‘ Parse out the content dispostion lstrDisposition = ParseDisposition(pbinChunk) ? ‘ And Parse the Name lstrName = ParseName(lstrDisposition) ? ‘ And the file name lstrFileName = ParseFileName(lstrDisposition) ? ‘ Parse out the Content Type lstrContentType = ParseContentType(pbinChunk) ? ‘ If the content type is not defined, then assume the ‘ field is a normal form field If lstrContentType = "" Then ? ‘ Parse Binary Data as Unicode lstrValue = CStrU(ParseBinaryData(pbinChunk)) ? ‘ Else assume the field is binary data Else ? ‘ Parse Binary Data lbinData = ParseBinaryData(pbinChunk) ? End If ? ‘ Add a new field Call AddField(lstrName, lstrFileName, lstrContentType, lstrValue, lbinData) ? End Sub ‘ ------------------------------------------------------------------------------ Private Sub AddField(ByRef pstrName, ByRef pstrFileName, ByRef pstrContentType, ByRef pstrValue, ByRef pbinData) ? Dim lobjField ‘ Field object class ? ‘ Add a new index to the field array ‘ Make certain not to destroy current fields ReDim Preserve mobjFieldAry(mlngCount) ? ‘ Create new field object Set lobjField = New clsField ? ‘ Set field properties lobjField.Name = pstrName lobjField.FilePath = pstrFileName lobjField.FileName = Mid(pstrFileName, InStrRev(pstrFileName, "\") + 1) ‘ <= line added to set the file name lobjField.ContentType = pstrContentType ? ‘ If field is not a binary file If LenB(pbinData) = 0 Then ? lobjField.BinaryData = ChrB(0) lobjField.Value = pstrValue lobjField.Length = Len(pstrValue) ? ‘ Else field is a binary file Else ? lobjField.BinaryData = pbinData lobjField.Length = LenB(pbinData) lobjField.Value = "" ? End If ? ‘ Set field array index to new field Set mobjFieldAry(mlngCount) = lobjField ? ‘ Incriment field count mlngCount = mlngCount + 1 ? End Sub ‘ ------------------------------------------------------------------------------ Private Function ParseBinaryData(ByRef pbinChunk) ? ‘ Parses binary content of the chunk ? Dim llngStart ‘ Start Position ? ‘ Find first occurence of a blank line llngStart = InStrB(1, pbinChunk, CRLF & CRLF) ? ‘ If it doesn‘t exist, then return nothing If llngStart = 0 Then Exit Function ? ‘ Incriment start to pass carriage returns and line feeds llngStart = llngStart + 4 ? ‘ Return the last part of the chunk after the start position ParseBinaryData = MidB(pbinChunk, llngStart) ? End Function ‘ ------------------------------------------------------------------------------ Private Function ParseContentType(ByRef pbinChunk) ? ‘ Parses the content type of a binary file. ‘ example: image/gif is the content type of a GIF image. ? Dim llngStart ‘ Start Position Dim llngEnd ‘ End Position Dim llngLength ‘ Length ? ‘ Fid the first occurance of a line starting with Content-Type: llngStart = InStrB(1, pbinChunk, CRLF & CStrB("Content-Type:"), vbTextCompare) ? ‘ If not found, return nothing If llngStart = 0 Then Exit Function ? ‘ Find the end of the line llngEnd = InStrB(llngStart + 15, pbinChunk, CR) ? ‘ If not found, return nothing If llngEnd = 0 Then Exit Function ? ‘ Adjust start position to start after the text "Content-Type:" llngStart = llngStart + 15 ? ‘ If the start position is the same or past the end, return nothing If llngStart >= llngEnd Then Exit Function ? ‘ Determine length llngLength = llngEnd - llngStart ? ‘ Pull out content type ‘ Convert to unicode ‘ Trim out whitespace ‘ Return results ParseContentType = Trim(CStrU(MidB(pbinChunk, llngStart, llngLength))) ? End Function ‘ ------------------------------------------------------------------------------ Private Function ParseDisposition(ByRef pbinChunk) ? ‘ Parses the content-disposition from a chunk of data ‘ ‘ Example: ‘ ‘ Content-Disposition: form-data: name="File1"; filename="C:\Photo.gif" ‘ ‘ Would Return: ‘ form-data: name="File1"; filename="C:\Photo.gif" ? Dim llngStart ‘ Start Position Dim llngEnd ‘ End Position Dim llngLength ‘ Length ? ‘ Find first occurance of a line starting with Content-Disposition: llngStart = InStrB(1, pbinChunk, CRLF & CStrB("Content-Disposition:"), vbTextCompare) ? ‘ If not found, return nothing If llngStart = 0 Then Exit Function ? ‘ Find the end of the line llngEnd = InStrB(llngStart + 22, pbinChunk, CRLF) ? ‘ If not found, return nothing If llngEnd = 0 Then Exit Function ? ‘ Adjust start position to start after the text "Content-Disposition:" llngStart = llngStart + 22 ? ‘ If the start position is the same or past the end, return nothing If llngStart >= llngEnd Then Exit Function ? ‘ Determine Length llngLength = llngEnd - llngStart ? ‘ Pull out content disposition ‘ Convert to Unicode ‘ Return Results ParseDisposition = CStrU(MidB(pbinChunk, llngStart, llngLength)) ? End Function ‘ ------------------------------------------------------------------------------ Private Function ParseName(ByRef pstrDisposition) ? ‘ Parses the name of the field from the content disposition ‘ ‘ Example ‘ ‘ form-data: name="File1"; filename="C:\Photo.gif" ‘ ‘ Would Return: ‘ File1 ? Dim llngStart ‘ Start Position Dim llngEnd ‘ End Position Dim llngLength ‘ Length ? ‘ Find first occurance of text name=" llngStart = InStr(1, pstrDisposition, "name=""", vbTextCompare) ? ‘ If not found, return nothing If llngStart = 0 Then Exit Function ? ‘ Find the closing quote llngEnd = InStr(llngStart + 6, pstrDisposition, """") ? ‘ If not found, return nothing If llngEnd = 0 Then Exit Function ? ‘ Adjust start position to start after the text name=" llngStart = llngStart + 6 ? ‘ If the start position is the same or past the end, return nothing If llngStart >= llngEnd Then Exit Function ? ‘ Determine Length llngLength = llngEnd - llngStart ? ‘ Pull out field name ‘ Return results ParseName = Mid(pstrDisposition, llngStart, llngLength) ? End Function ‘ ------------------------------------------------------------------------------ Private Function ParseFileName(ByRef pstrDisposition) ‘ Parses the name of the field from the content disposition ‘ ‘ Example ‘ ‘ form-data: name="File1"; filename="C:\Photo.gif" ‘ ‘ Would Return: ‘ C:\Photo.gif ? Dim llngStart ‘ Start Position Dim llngEnd ‘ End Position Dim llngLength ‘ Length ? ‘ Find first occurance of text filename=" llngStart = InStr(1, pstrDisposition, "filename=""", vbTextCompare) ? ‘ If not found, return nothing If llngStart = 0 Then Exit Function ? ‘ Find the closing quote llngEnd = InStr(llngStart + 10, pstrDisposition, """") ? ‘ If not found, return nothing If llngEnd = 0 Then Exit Function ? ‘ Adjust start position to start after the text filename=" llngStart = llngStart + 10 ? ‘ If the start position is the same of past the end, return nothing If llngStart >= llngEnd Then Exit Function ? ‘ Determine length llngLength = llngEnd - llngStart ? ‘ Pull out file name ‘ Return results ParseFileName = Mid(pstrDisposition, llngStart, llngLength) ? End Function ‘ ------------------------------------------------------------------------------ Public Property Get Count() ? ‘ Return number of fields found Count = mlngCount ? End Property ‘ ------------------------------------------------------------------------------ ? Public Default Property Get Fields(ByVal pstrName) ? Dim llngIndex ‘ Index of current field ? ‘ If a number was passed If IsNumeric(pstrName) Then ? llngIndex = CLng(pstrName) ? ‘ If programmer requested an invalid number If llngIndex > mlngCount - 1 Or llngIndex < 0 Then ‘ Raise an error Call Err.Raise(vbObjectError + 1, "clsUpload.asp", "Object does not exist within the ordinal reference.") Exit Property End If ? ‘ Return the field class for the index specified Set Fields = mobjFieldAry(pstrName) ? ‘ Else a field name was passed Else ? ‘ convert name to lowercase pstrName = LCase(pstrname) ? ‘ Loop through each field For llngIndex = 0 To mlngCount - 1 ? ‘ If name matches current fields name in lowercase If LCase(mobjFieldAry(llngIndex).Name) = pstrName Then ? ‘ Return Field Class Set Fields = mobjFieldAry(llngIndex) Exit Property ? End If ? Next ? End If ? ‘ If matches were not found, return an empty field Set Fields = New clsField ? ‘ ‘ ERROR ON NonExistant: ‘ ‘ If matches were not found, raise an error of a non-existent field ‘ Call Err.Raise(vbObjectError + 1, "clsUpload.asp", "Object does not exist within the ordinal reference.") ‘ Exit Property ? End Property ‘ ------------------------------------------------------------------------------ Private Sub Class_Terminate() ? ‘ This event is called when you destroy the class. ‘ ‘ Example: ‘ Set objUpload = Nothing ‘ ‘ Example: ‘ Response.End ‘ ‘ Example: ‘ Page finnishes executing ... ? Dim llngIndex ‘ Current Field Index ? ‘ Loop through fields For llngIndex = 0 To mlngCount - 1 ? ‘ Release field object Set mobjFieldAry(llngIndex) = Nothing ? Next ? ‘ Redimension array and remove all data within ReDim mobjFieldAry(-1) ? End Sub ‘ ------------------------------------------------------------------------------ Private Sub Class_Initialize() ? ‘ This event is called when you instantiate the class. ‘ ‘ Example: ‘ Set objUpload = New clsUpload ? ‘ Redimension array with nothing ReDim mobjFieldAry(-1) ? ‘ Compile ANSI equivilants of carriage returns and line feeds ? CR = ChrB(Asc(vbCr)) ‘ vbCr Carriage Return LF = ChrB(Asc(vbLf)) ‘ vbLf Line Feed CRLF = CR & LF ‘ vbCrLf Carriage Return & Line Feed ? ‘ Set field count to zero mlngCount = 0 ? ‘ Request data Call RequestData ? ‘ Parse out the delimiter Call ParseDelimiter() ? ‘ Parse the data Call ParseData ? End Sub ‘ ------------------------------------------------------------------------------ Private Function CStrU(ByRef pstrANSI) ? ‘ Converts an ANSI string to Unicode ‘ Best used for small strings ? Dim llngLength ‘ Length of ANSI string Dim llngIndex ‘ Current position ? ‘ determine length llngLength = LenB(pstrANSI) ? ‘ Loop through each character For llngIndex = 1 To llngLength ? ‘ Pull out ANSI character ‘ Get Ascii value of ANSI character ‘ Get Unicode Character from Ascii ‘ Append character to results CStrU = CStrU & Chr(AscB(MidB(pstrANSI, llngIndex, 1))) ? Next ? End Function ‘ ------------------------------------------------------------------------------ Private Function CStrB(ByRef pstrUnicode) ? ‘ Converts a Unicode string to ANSI ‘ Best used for small strings ? Dim llngLength ‘ Length of ANSI string Dim llngIndex ‘ Current position ? ‘ determine length llngLength = Len(pstrUnicode) ? ‘ Loop through each character For llngIndex = 1 To llngLength ? ‘ Pull out Unicode character ‘ Get Ascii value of Unicode character ‘ Get ANSI Character from Ascii ‘ Append character to results CStrB = CStrB & ChrB(Asc(Mid(pstrUnicode, llngIndex, 1))) ? Next ? End Function ‘ ------------------------------------------------------------------------------ End Class ‘ ------------------------------------------------------------------------------ %>
<% ‘ ------------------------------------------------------------------------------ ‘ Author: Lewis Moten ‘ Date: March 19, 2002 ‘ ------------------------------------------------------------------------------ ? ‘ Field class represents interface to data passed within one field ‘ ‘ ------------------------------------------------------------------------------ Class clsField ? Public Name ‘ Name of the field defined in form ? Private mstrPath ‘ Full path to file on visitors computer ‘ C:\Documents and Settings\lmoten\Desktop\Photo.gif ? Public FileDir ‘ Directory that file existed in on visitors computer ‘ C:\Documents and Settings\lmoten\Desktop ? Public FileExt ‘ Extension of the file ‘ GIF ? Public FileName ‘ Name of the file ‘ Photo.gif ? Public ContentType ‘ Content / Mime type of file ‘ image/gif ? Public Value ‘ Unicode value of field (used for normail form fields - not files) ? Public BinaryData ‘ Binary data passed with field (for files) ? Public Length ‘ byte size of value or binary data ? Private mstrText ‘ Text buffer ‘ If text format of binary data is requested more then ‘ once, this value will be read to prevent extra processing ? ‘ ------------------------------------------------------------------------------ Public Property Get BLOB() BLOB = BinaryData End Property ‘ ------------------------------------------------------------------------------ Public Function BinaryAsText() ? ‘ Binary As Text returns the unicode equivilant of the binary data. ‘ this is useful if you expect a visitor to upload a text file that ‘ you will need to work with. ? ‘ NOTICE: ‘ NULL values will prematurely terminate your Unicode string. ‘ NULLs are usually found within binary files more often then plain-text files. ‘ a simple way around this may consist of replacing null values with another character ‘ such as a space " " ? Dim lbinBytes Dim lobjRs ? ‘ Don‘t convert binary data that does not exist If Length = 0 Then Exit Function If LenB(BinaryData) = 0 Then Exit Function ? ‘ If we previously converted binary to text, return the buffered content If Not Len(mstrText) = 0 Then BinaryAsText = mstrText Exit Function End If ? ‘ Convert Integer Subtype Array to Byte Subtype Array lbinBytes = ASCII2Bytes(BinaryData) ? ‘ Convert Byte Subtype Array to Unicode String mstrText = Bytes2Unicode(lbinBytes) ? ‘ Return Unicode Text BinaryAsText = mstrText ? End Function ‘ ------------------------------------------------------------------------------ Public Sub SaveAs(ByRef pstrFileName) ? Dim lobjStream Dim lobjRs Dim lbinBytes ? ‘ Don‘t save files that do not posess binary data If Length = 0 Then Exit Sub If LenB(BinaryData) = 0 Then Exit Sub ? ‘ Create magical objects from never never land Set lobjStream = Server.CreateObject("ADODB.Stream") ? ‘ Let stream know we are working with binary data lobjStream.Type = adTypeBinary ? ‘ Open stream Call lobjStream.Open() ? ‘ Convert Integer Subtype Array to Byte Subtype Array lbinBytes = ASCII2Bytes(BinaryData) ? ‘ Write binary data to stream Call lobjStream.Write(lbinBytes) ? ‘ Save the binary data to file system ‘ Overwrites file if previously exists! Call lobjStream.SaveToFile(pstrFileName, adSaveCreateOverWrite) ? ‘ Close the stream object Call lobjStream.Close() ? ‘ Release objects Set lobjStream = Nothing ? End Sub ‘ ------------------------------------------------------------------------------ Public Property Let FilePath(ByRef pstrPath) ? mstrPath = pstrPath ? ‘ Parse File Ext If Not InStrRev(pstrPath, ".") = 0 Then FileExt = Mid(pstrPath, InStrRev(pstrPath, ".") + 1) FileExt = UCase(FileExt) End If ? ‘ Parse File Name If Not InStrRev(pstrPath, "\") = 0 Then FileName = Mid(pstrPath, InStrRev(pstrPath, "\") + 1) End If ? ‘ Parse File Dir If Not InStrRev(pstrPath, "\") = 0 Then FileDir = Mid(pstrPath, 1, InStrRev(pstrPath, "\") - 1) End If ? End Property ‘ ------------------------------------------------------------------------------ Public Property Get FilePath() FilePath = mstrPath End Property ‘ ------------------------------------------------------------------------------ Private Function ASCII2Bytes(ByRef pbinBinaryData) ? Dim lobjRs Dim llngLength Dim lbinBuffer ? ‘ get number of bytes llngLength = LenB(pbinBinaryData) ? Set lobjRs = Server.CreateObject("ADODB.Recordset") ? ‘ create field in an empty recordset to hold binary data Call lobjRs.Fields.Append("BinaryData", adLongVarBinary, llngLength) ? ‘ Open recordset Call lobjRs.Open() ? ‘ Add a new record to recordset Call lobjRs.AddNew() ? ‘ Populate field with binary data Call lobjRs.Fields("BinaryData").AppendChunk(pbinBinaryData & ChrB(0)) ? ‘ Update / Convert Binary Data ‘ Although the data we have is binary - it has still been ‘ formatted as 4 bytes to represent each byte. When we ‘ update the recordset, the Integer Subtype Array that we ‘ passed into the Recordset will be converted into a ‘ Byte Subtype Array Call lobjRs.Update() ? ‘ Request binary data and save to stream lbinBuffer = lobjRs.Fields("BinaryData").GetChunk(llngLength) ? ‘ Close recordset Call lobjRs.Close() ? ‘ Release recordset from memory Set lobjRs = Nothing ? ‘ Return Bytes ASCII2Bytes = lbinBuffer ? End Function ‘ ------------------------------------------------------------------------------ Private Function Bytes2Unicode(ByRef pbinBytes) ? Dim lobjRs Dim llngLength Dim lstrBuffer ? llngLength = LenB(pbinBytes) ? Set lobjRs = Server.CreateObject("ADODB.Recordset") ? ‘ Create field in an empty recordset to hold binary data Call lobjRs.Fields.Append("BinaryData", adLongVarChar, llngLength) ? ‘ Open Recordset Call lobjRs.Open() ? ‘ Add a new record to recordset Call lobjRs.AddNew() ? ‘ Populate field with binary data Call lobjRs.Fields("BinaryData").AppendChunk(pbinBytes) ? ‘ Update / Convert. ‘ Ensure bytes are proper subtype Call lobjRs.Update() ? ‘ Request unicode value of binary data lstrBuffer = lobjRs.Fields("BinaryData").Value ? ‘ Close recordset Call lobjRs.Close() ? ‘ Release recordset from memory Set lobjRs = Nothing ? ‘ Return Unicode Bytes2Unicode = lstrBuffer ? End Function ? ‘ ------------------------------------------------------------------------------ End Class ‘ ------------------------------------------------------------------------------ %>
但是我们还需要把这个文件名加到文件列表中(如果说不添加,可以在服务器后端运行一个不断获取文件夹内的文件列表写入list.txt比较麻烦
于是我们就需要让用户自己输入刚才上传的文件名:
<html> <head> <title>Filename Inputer</title> <meta charset="UTF-8"> </head> <body> <form action="AddPath.aspx" method="post"><!--让AddPath.aspx将它加入列表--> <p>Input the file‘s filename you upload just then:</p> <input type="input" name="fnm"> <input type="submit" value="Submit"> </form> </body> </html>
<%@ Page Debug="true" %> <html> <head> <title>AddPath</title> <meta charset="UTF-8"> </head> <body> <% Dim fso Dim f fso=CreateObject("Scripting.FileSystemObject") f=fso.OpenTextFile("D:\cloud\list.txt",8,True) ‘注意这里要用绝对路径,不然会引发权限错误 Dim fnm fnm=Request.Form("fnm") f.WriteLine(fnm) f.Close Response.write("<script>alert(‘UpLoad Success!‘);window.location.href=‘./UpLoad.asp‘;</script>") ‘跳转回去 %> </body> </html>
上传到此结束,接下来看下载
<html> <head> <title>DownLoad</title> <meta charset="UTF-8"></meta> </head> <body> <% Dim Fso Dim myFile Fso = Server.CreateObject("Scripting.FileSystemObject") myFile = Fso.OpenTextFile(Server.MapPath("list.txt"),1,True) While Not myFile.AtEndOfStream ‘将文件列表中的全部输出 Dim V=myFile.ReadLine Response.Write("<a href=‘UpLoads\" & V & "‘ download=‘" & V & "‘style=‘font-size:30px‘>" & V & "</a><br /><br />") ‘输出下载标签 End While %> </body> </html>
到此,所有文件都写完了,接下来可以http://localhost:端口/filecloudEV.html查看效果了
但是这个网址还有一个问题:
标签:may rmi set com hat settings star 获取文件夹 cto
原文地址:https://www.cnblogs.com/zhuchengyang/p/10160876.html