嘿,伙计们,这里的asp脚本有点问题。以下是我用于用户上传图像的上传功能的代码
<%
' Create the FileUploader
Dim Uploader, File, FileSys, FilePath
Set Uploader = New FileUploader
' This starts the upload process
Uploader.Upload()
' Check if any files were uploaded
If Uploader.Files.Count = 0 Then
Response.Write "File(s) not uploaded."
Else
' Loop through the uploaded files
For Each File In Uploader.Files.Items
' Set upload Path and Filename to check if that file already exists
FilePath = "C:\inetpub\wwwroot\coursework2\database\uploads\"&File.FileName
Set FileSys = CreateObject("Scripting.FileSystemObject")
' If intended uploaded file already exists in the specified directory do alert and redirect previous page
If FileSys.FileExists(FilePath) then
Response.Write("<script>alert('Sorry FileName:"& File.FileName &" Already Used!! Please Rename Your Local File')</script>")
Response.Write("<script>window.location.href='index.asp'</script>")
else
' Else Save the file
File.SaveToDisk "C:\inetpub\wwwroot\coursework2\database\uploads"
end if
Next
' Confirm file saved and redirect to previous page if more files to be uploaded
Response.Write("<script>alert('File Saved')</script>")
Response.Write("<script>window.location.href='index.asp'</script>")
End If
%>这是到服务器的连接字符串我也在尝试上载该文件
"Provider=Microsoft.ACE.OLEDB.12.0;Data Source="& Server.MapPath("/dek0272/coursework2/database/uploads")这就是我想要将文件路径和磁盘位置的File.save设置为
http://focserver.londonmet.ac.uk/dek0272/coursework2/database/uploads/当我将文件路径和磁盘位置的file.save更改为此地址时。该函数不会上传任何内容。我相信我写错了路。我已经尝试了很多方法来写它,但还是没有成功。
有什么建议吗
谢谢
这是upLoadFunctions.asp文件
<%
Class FileUploader
Public Files
Private mcolFormElem
Private Sub Class_Initialize()
Set Files = Server.CreateObject("Scripting.Dictionary")
Set mcolFormElem = Server.CreateObject("Scripting.Dictionary")
End Sub
Private Sub Class_Terminate()
If IsObject(Files) Then
Files.RemoveAll()
Set Files = Nothing
End If
If IsObject(mcolFormElem) Then
mcolFormElem.RemoveAll()
Set mcolFormElem = Nothing
End If
End Sub
Public Property Get Form(sIndex)
Form = ""
If mcolFormElem.Exists(LCase(sIndex)) Then Form = mcolFormElem.Item(LCase(sIndex))
End Property
Public Default Sub Upload()
Dim biData, sInputName
Dim nPosBegin, nPosEnd, nPos, vDataBounds, nDataBoundPos
Dim nPosFile, nPosBound
biData = Request.BinaryRead(Request.TotalBytes)
nPosBegin = 1
nPosEnd = InstrB(nPosBegin, biData, CByteString(Chr(13)))
If (nPosEnd-nPosBegin) <= 0 Then Exit Sub
vDataBounds = MidB(biData, nPosBegin, nPosEnd-nPosBegin)
nDataBoundPos = InstrB(1, biData, vDataBounds)
Do Until nDataBoundPos = InstrB(biData, vDataBounds & CByteString("--"))
nPos = InstrB(nDataBoundPos, biData, CByteString("Content-Disposition"))
nPos = InstrB(nPos, biData, CByteString("name="))
nPosBegin = nPos + 6
nPosEnd = InstrB(nPosBegin, biData, CByteString(Chr(34)))
sInputName = CWideString(MidB(biData, nPosBegin, nPosEnd-nPosBegin))
nPosFile = InstrB(nDataBoundPos, biData, CByteString("filename="))
nPosBound = InstrB(nPosEnd, biData, vDataBounds)
If nPosFile <> 0 And nPosFile < nPosBound Then
Dim oUploadFile, sFileName
Set oUploadFile = New UploadedFile
nPosBegin = nPosFile + 10
nPosEnd = InstrB(nPosBegin, biData, CByteString(Chr(34)))
sFileName = CWideString(MidB(biData, nPosBegin, nPosEnd-nPosBegin))
oUploadFile.FileName = Right(sFileName, Len(sFileName)-InStrRev(sFileName, "\"))
nPos = InstrB(nPosEnd, biData, CByteString("Content-Type:"))
nPosBegin = nPos + 14
nPosEnd = InstrB(nPosBegin, biData, CByteString(Chr(13)))
oUploadFile.ContentType = CWideString(MidB(biData, nPosBegin, nPosEnd-nPosBegin))
nPosBegin = nPosEnd+4
nPosEnd = InstrB(nPosBegin, biData, vDataBounds) - 2
oUploadFile.FileData = MidB(biData, nPosBegin, nPosEnd-nPosBegin)
If oUploadFile.FileSize > 0 Then Files.Add LCase(sInputName), oUploadFile
Else
nPos = InstrB(nPos, biData, CByteString(Chr(13)))
nPosBegin = nPos + 4
nPosEnd = InstrB(nPosBegin, biData, vDataBounds) - 2
If Not mcolFormElem.Exists(LCase(sInputName)) Then mcolFormElem.Add LCase(sInputName), CWideString(MidB(biData, nPosBegin, nPosEnd-nPosBegin))
End If
nDataBoundPos = InstrB(nDataBoundPos + LenB(vDataBounds), biData, vDataBounds)
Loop
End Sub
'String to byte string conversion
Private Function CByteString(sString)
Dim nIndex
For nIndex = 1 to Len(sString)
CByteString = CByteString & ChrB(AscB(Mid(sString,nIndex,1)))
Next
End Function
'Byte string to string conversion
Private Function CWideString(bsString)
Dim nIndex
CWideString =""
For nIndex = 1 to LenB(bsString)
CWideString = CWideString & Chr(AscB(MidB(bsString,nIndex,1)))
Next
End Function
End Class
Class UploadedFile
Public ContentType
Public FileName
Public FileData
Public Property Get FileSize()
FileSize = LenB(FileData)
End Property
Public Sub SaveToDisk(sPath)
Dim oFS, oFile
Dim nIndex
If sPath = "" Or FileName = "" Then Exit Sub
If Mid(sPath, Len(sPath)) <> "\" Then sPath = sPath & "\"
Set oFS = Server.CreateObject("Scripting.FileSystemObject")
If Not oFS.FolderExists(sPath) Then Exit Sub
Set oFile = oFS.CreateTextFile(sPath & FileName, True)
For nIndex = 1 to LenB(FileData)
oFile.Write Chr(AscB(MidB(FileData,nIndex,1)))
Next
oFile.Close
End Sub
Public Sub SaveToDatabase(ByRef oField)
If LenB(FileData) = 0 Then Exit Sub
If IsObject(oField) Then
oField.AppendChunk FileData
End If
End Sub
End Class发布于 2016-12-16 17:56:50
您是否收到任何ASP错误消息?如果是,错误代码是什么?如果不是,请尝试一个无效的文件路径,以引起错误(查看文件路径是否有问题)。
Afaik此行
Set FileSys = CreateObject("Scripting.FileSystemObject")应该是
Set FileSys = Server.CreateObject("Scripting.FileSystemObject")另一个可能的错误来源:您是否检查了filepath文件夹是否具有适当的写入权限?有关如何在IIS 7.5 (=Win Server 2008R2)上设置写入权限的信息,请参阅:
How do I give ASP.NET permission to write to a folder in Windows 7?
https://stackoverflow.com/questions/41177363
复制相似问题